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 faisla console m'affiche correctement la requête dans la console.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part print(requete)
J'ai également testé
mais sans plus de succès.
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)
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
dans la console Python normale de SPYDER j'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4sys.stdin.encoding: cp1252 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?
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![]()
Partager