Re: [CPS-users-fr] Re: Encodage de caractères MySQL

Cedric Marfil cedric.marfil at capgemini.com
Ven 6 Oct 12:19:40 CEST 2006


A priori, ma base est bien encodée en latin1, si je fais un script d'export de celle-ci sur mon client SQL, il me génère ceci:
CREATE DATABASE `XXX`
    CHARACTER SET 'latin1'
    COLLATE 'latin1_swedish_ci';
Donc ma base doit être encodée en 'latin1', mon defaultencoding python est setté par le sitecustomize.py sur 'latin-1'. J'ai essayé aussi 'latin1' dans le sitecustomize, mais rien ne semble y faire.

Je ne comprend pas ce qu'il se passe
Est-ce qu'une des libs python utilisées pourrait transformer l'encodage à la volée ?


--------------------------------------------------------------------------------
Cédric Marfil
Concepteur Réalisateur Intégrateur Confirmé
Tél. direct: 03.20.65.34.82
Mail: cedric.marfil at capgemini.com

Capgemini
181 rue Jules Delcenserie
59700 Marcq en Baroeul

  ----- Original Message ----- 
  From: Olivier Grisel 
  To: cps-users-fr at lists.nuxeo.com 
  Sent: Friday, October 06, 2006 11:59 AM
  Subject: [CPS-users-fr] Re: Encodage de caractères MySQL


  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 : cps-users-fr at lists.nuxeo.com
  Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient,  you are not authorized to read, print, retain, copy, disseminate,  distribute, or use this message or any part thereof. If you receive this  message in error, please notify the sender immediately and delete all  copies of this message.
-------------- section suivante --------------
Une pièce jointe HTML a été enlevée...
URL: http://lists.nuxeo.com/pipermail/cps-users-fr/attachments/20061006/b21215ff/attachment.html



This list archive provided by Nuxeo, the leaders of open source ECM. Check out the Nuxeo 5 open source, standards-based ECM project.