Encodage des caractères [Résolu]

Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
21 mai 2014
- - Dernière réponse : taz_iup
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
21 mai 2014
3
Merci
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"

Merci taz_iup 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de taz_iup
Messages postés
74
Date d'inscription
dimanche 2 novembre 2003
Dernière intervention
6 septembre 2008
0
Merci
Super truc !!!!
ça marche nickel pour une fois !!!

Merci bcp !!!
Commenter la réponse de cs_Bl0tCh
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
21 mai 2014
0
Merci
Je crois que je doit etre le seul qui répond tout seul à ses questions...
Commenter la réponse de taz_iup
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
21 mai 2014
0
Merci
enfin à ses propres questions.
Commenter la réponse de taz_iup
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Dernière intervention
23 juin 2008
0
Merci
Je dois être con mais j'ai pas cette fonction dans le module sys...



ya la fonction : getdefaultencoding() qui me retourne 'ascii'

mais pas setdefaultencoding()...



c'est normal?

quel version de python tu as ?

moi la version 2.4.1



>>>sys.getdefaultencoding()

'ascii'

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

Traceback (most recent call last):

File "", line 1, in ?

sys.setdefaultencoding('latin-1')

AttributeError: 'module' object has no attribute 'setdefaultencoding'
Commenter la réponse de cs_DoudouBidou
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Dernière intervention
23 juin 2008
0
Merci
en fait , il faut pas se poser de question,



il faut créer ce fichier sitecustomize.py et mettre dedans :

import sys
sys.setdefaultencoding('iso-8859-1')

ça fonctionne à merveille... que demander de plus :)

Pour info il faut savoir que le fichier sitecustomize.py est lancé à chaque démarrage de python
(si le fichier existe biensur)
donc pour executer un script systématique à chaque lancement de python,
il suffit de placer le code dans ce fichier :)
Commenter la réponse de cs_DoudouBidou
Messages postés
179
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
21 mai 2014
0
Merci
vi c'est normal moi aussi mais quand tu la met dans le fichier préciser
la fonction est acceptée, aussi étrange que cela puisse paraître!
Commenter la réponse de taz_iup

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.