PYODBC encore un problème d'encodage
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:
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:
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:
# -*- coding: utf-8 -*-
même en faisant
Code:
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:
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:
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:
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:
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? :help: