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>

Répondre à