Bonjour,
j'aurais besoin de votre aide sur un problème "d'encoding" que je rencontre avec Python.

J'utilise "WinPython-32bit-3.4.3.7" avec l'IDE SPYDER pour écrire le code Python

Je souhaites faire des requêtes sql sur une base de données SQL SERVER et j'utilise le module PYODBC qui est fourni dans WINPYTHON.
La connexion réussie et j'arrive à faire des requêtes basiques.
ex:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
SELECT DISTINCT
  A.NAME AS [nom]
  B.JOB
FROM
  CONTACTS A
    INNER JOIN ACTIVITY B ON (A.ID=B.ID)

Mais quand je fais
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
SELECT DISTINCT
  A.NAME AS [nom]
  B.JOB AS [activités]
FROM
  CONTACTS A
    INNER JOIN ACTIVITY B ON (A.ID=B.ID)

je reçois le code d'erreur "'utf-8' codec can't decode byte 0xe9"
Je recherche sur le net et constate que c'est un problème d'encoding en 'utf-8' mais pourtant j'ai à la première ligne du fichier
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
# -*- coding: utf-8 -*-

même en faisant
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
requete=u"""SELECT DISTINCT
  A.NAME AS [nom]
  B.JOB AS [activités]
FROM
  CONTACTS A
    INNER JOIN ACTIVITY B ON (A.ID=B.ID)"""

ça ne marche pas. Alors que quand je fais la console m'affiche correctement la requête dans la console.
J'ai également testé
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
requetebis=requete.encode('utf-8')
with conn.cursor() as cursor:
    cursor.execute(requetebis)
mais sans plus de succès.

Ensuite j'ai testé le code Python suivant:
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
def testencoding():
    print("sys.stdin.encoding: {}".format(sys.stdin.encoding))
    print("sys.getdefaultencoding: {}".format(sys.getdefaultencoding()))
    print("sys.getfilesystemencoding: {}".format(sys.getfilesystemencoding()))
    print("locale.getpreferredencoding: {}".format(locale.getpreferredencoding()))

et j'obtiens dans la console IPython de SPYDER
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sys.stdin.encoding: cp1252
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: mbcs
locale.getpreferredencoding: cp1252
dans la console Python normale de SPYDER j'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sys.stdin.encoding: UTF-8
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: mbcs
locale.getpreferredencoding: cp1252
Selon vous d'où viendrait le problème? Et comment puis-je le résoudre s'il vous plaît?