OVH Cloud OVH Cloud

Unicoderie ?!

13 réponses
Avatar
Fred
J'ai une appli qui tourne tr=E8s bien en attaquant une base access. Bon,
pas joli, mais =E7a roule en utilisant la adodbapi.
Je passe cette appli sous Mysql, rien de dingue... je comptais utiliser
la Msql-python 1.0.0 kivabien. Et, bien l=E0, patatras, unbe b=EAte
syntaxe du style 'insert into famille(Nomfamille,TypeA) select
"=E9","J";'
Et bien, rien ne se passe, alors que si 'insert into
famille(Nomfamille,TypeA) select "e","J";' , =E7a colle.
JE commence en en avoir s=E9rieusement raz la casquette, de ces
unicoderies, parceque je pense que c'est encore le probl=E8me.
Donc QUESTION GRAVE :
Comment acc=E8der en fran=E7ais (avec c=E9dille) =E0 une base mysql avec
python.
=E7a doit =EAtre possible, non, au 21eme si=E8cle (avec accent)?

3 réponses

1 2
Avatar
Hervé Cauwelier

Si si, je stocke en UTF-8 dans MySQL et MySQLdb me retourne des
chaînes Unicode.


Excusez, mes connaissances dans MySQL/MySQLdb datent sans doute. Quel
type de colonne utilisez-vous pour ceci ?


Tous les types chaîne ou texte; il suffit de dire que le codage est
UTF-8 à la création de la table. Ceci dit, c'est héroïque avec les
versions inférieures à 4.0.

Le reste du travail est fait par MySQLdb qui converti les types SQL en
types Python (chaînes, mais aussi dates, etc.). Comme il bouge beaucoup,
il vaut mieux regarder la doc pour voir les paramètres à passer
concernant Unicode. Ceci dit, la dernière fois, la doc n'était pas à
jour concernant les changements de MySQLdb 1.2...

La conversion UTF-8 <-> Unicode est-elle effectuée par un adaptateur
perso (on peut associer des convertisseurs Python <-> MySQL avec une
connexion MySQL) ou bien est-ce le comportement "naturel" du type de
colonne ?


C'est celui de MySQLdb comme je l'ai dit mais ce n'est pas magique : il
faut maîtriser le format de ses données d'un bout à l'autre de la chaîne
(ha ha ! hem...).

Moi ce qui m'énerve, c'est les types qui se plaignent des problèmes de
codage sans comprendre le quart du tiers de ce qu'ils font. Forcément,
ça explose...


Désolé de vous énerver... Mais il me semble que ce forum est destiné
(entre autres) à permettre aux utilisateurs "coincés" par un problème de
solliciter de l'aide.


Dire « putain ça marche pas, c'est de la merde » et rabaisser le travail
de Python, MySQL et MySQLdb parce qu'on ne comprend pas ce qu'on fait,
ce n'est pas demander de l'aide.

Demander « J'ai fait ça et je me suis tiré une balle dans le pied,
pourquoi ? », c'est demander de l'aide.

--
Hervé Cauwelier
http://www.oursours.net/


Avatar
Hervé Cauwelier
http://french.joelonsoftware.com/Articles/Unicode.html


Merci beaucoup pour le lien, il manquait un article de vulgarisation en
français.

--
Hervé Cauwelier
http://www.oursours.net/

Avatar
Tibi
Fred wrote:

Tu écris comment "con vivial" (voir mail signé tibi)?


En tout cas tu es le premier à être grossier sur ce newsgroup.

1 2