Bonjour,
Ah décidémment!! Je crois que j'ai trouvé un défaut a Python! La gestion des encodages de caractères!!
Voila mon problème. J'ai a ma disposition une base de données Mysql dont "l'interclassement" des tables est utf8_unicode_ci:
J'ai ensuite un script coté serveur et un petit programme client.
Le script sur mon serveur fait une requete SQL pour récuperer des données dans la base et les renvoie a mon programme client. Je précise que l'encodage par défaut pour Python sur mon serveur est utf8.
Pour ne pas avoir de problème d'encodage (accents supprimés,etc, etc....) entre les clients sur window$ et sur linux ou mac, j'ai utilisé la technique suivante :
Ainsi les chaines sont (en théorie) converties dans le bon encodage avant d'etre renvoyées....mais ca ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 c.execute("SELECT nom from Categories") for i in range(c.rowcount): line=c.fetchone() print line.encode(codage,"replace") # le parametre codage est un argument envoyé par le client. il s'agit de son encodage par défaut
Voici mon erreur:
Cette position 15-17 correspond a un accent 'é'. Comment se fait il qu'unicode n'arrive pas a lire de l'unicode....j'y comprend décidément rien a ces encodages de caractères!!! Please HELP!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UnicodeDecodeError: 'utf8' codec can't decode bytes in position 15-17: invalid data
Partager