Encodage des caractères

Résolu
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 - 7 avril 2005 à 16:04
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 - 29 avril 2005 à 18:43
J'aimerai que quelque'un fasse un peu de lumiere sur ce monde obscur de l'encodage des caratères.....



ex de code.



def ma fonction( self, repertoire ):

...

min = [ "Reçus", "Envoyés", "Poubelle" ]

self.__min = map( lambda str : os.path.join(repertoire, str), min )



Le truc bizarre le voila:

quand j'execute ce code au lancement de mon Appli wx, tout va bien....

par contre losrque je l'execute pendant que je parse un fichier XML
avec une classe héritée de xml.sax.ContentHandler, j'obtient une erreur
dans ntpath.py ( os.path.join ) :



path += "\" + b

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 3: ordinal not in range(128)



sachant que b vaut "Reçus" ( g mit un print juste avant le += dans ntpath.py ) et que path vaut "C:\temp\UFR"



Derniere précision, je n'utilise pas d'unicode. Et en plus l'erreur
stipule que le code est > 128. D'apres mes souvenirs l'ASCII
(etendu, j'ai fait un setlocale...)va jusqu'a 256...

Autrte petite précision le code suivant provoque la meme erreur....



chaine = u"ç"

print chaine



Alors des idées? moi je sèche

7 réponses

taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
11 avril 2005 à 14:22
Python encode par déaut en ascii simple ( 128 caratères )

pour qu'il encode en iso-8859-1 ( latin-1 ) il suffit de mettre ces
deux lignes dans le fichier
<REP_PYTHON>\Lib\site-packages\sitecustomize.py

import sys
sys.setdefaultencoding('latin-1')

après le tour est joué!!!
plus de problème avec les caractères accentués.
voila , simplissimo!

ref = "http://www.pycs.net/users/0000323/stories/14.html"
3