Cedric Marfil a écrit :
Bonjour,
J'ai une base de données MySQL, sur un serveur Gentoo, encodée en 'latin1'.
J'utilise les librairies python suivantes pour m'y connecter:
- MySQL-Python 1.2.1_p2
- ZMySQLDA 2.0.8
Quand je fais une requête sur la base, il semblerait que les résultats
me reviennent au format 'utf-8'.
J'ai créé un fichier sitecustomize.py qui définit mon encodage par
défaut à 'latin-1'.
Rien n'y fait, j'ai toujours mes résultats en 'utf-8'.
Ce qui m'étonne c'est de ne pas retrouver de paramètre sur mon
connecteur ZMySQLDA qui me permettrait de définir l'encodage désiré,
comme c'est le cas pour le connecteur ZPsycoPgDA.
Avez vous une idée sur ce qui peut provoquer l'envoi des résultats au
format 'utf-8' ?
Le fait que les données stockées le soit en utf8 ? AMA MySQL ne s'amuse pas à
transcoder les chaines de caractères à la volée. Donc si on stocke de l'utf8 on
recupère de l'utf8. Il suffit juste de transcoder ces résultats en latin 9
(iso-8859-15) si on veut les afficher dans une page html générée par CPS.
result_str.decode('utf-8').encode('iso-8859-15', 'replace')
Le flag 'replace' permet de remplacer les caractères utf-8 non existant en
latin9 par un '?'. Dans CPSUtil on fournit en plus un fallback supplémentaire
chargé automatiquement dans CPS qui permet de faire des conversions
intelligentes pour les caractères windows (cp1252):
result_str.decode('utf-8').encode('iso-8859-15', 'latin9_fallback')
Les détails dans :
http://svn.nuxeo.org/trac/pub/browser/CPS3/products/CPSUtil/trunk/text.py
--
Olivier
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>