rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Python et Caractères accentués

punchup, le mardi 9 mars 2004 à 13:31:16
La commande listdir me retourne une liste où les caractères accentués font des folies...
Comment faire docteur pour avoir mes caractères OK?

Exemple :

>>> from os import listdir
>>> toto=listdir("c:\p3")
>>> print toto
['f\xe9t\xea\xe0.mp3']

et non fétêà.mp3

Ds Idle (win98) le probleme est identique que sur osx.
La portion encoding ASCII de site.py a été transformée en mbcs :

"
# Set the string encoding used by the Unicode implementation. The
# default is 'ascii', but if you're willing to experiment, you can
# change this.

encoding = "mbcs" # Default value set by _PyUnicode_Init()
"
si l'on fait un write de toto le pb est identique.

Comment faire?
Merci à tous d'avance...
Répondre à punchup  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sebsauvage, le mardi 9 mars 2004 à 17:15:59
Hello !

C'est normal.

Ta chaîne de caractères toto est en Unicode
(voir http://www.sebsauvage.net/comprendre/ascii/ ).

Ton terminal est en ASCII.
Python ne sait pas comment convertir les caractères Unicode en ASCII. C'est pour cela qu'il utilise \xe9 etc.

Tu peux lui donner un coup de pouce avec .encode():

>>> toto=u'fête'   # toto est une chaîne Unicode
>>> toto
u'f\x88te'
>>> print toto
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "c:\python23\lib\encodings\cp437.py", line 18, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\x88' in position : character maps to <undefined>
>>> print toto.encode('latin-1')
fête


"ê" ne fait pas partie du code ASCII ---> Python affiche \x88, ou fait une erreur quand tu fais un print.
Avec .encode('latin-1'), on demande à Python de convertir Unicode vers le code Latin-1 (ISO 8859-1 pour être précis).
Répondre à sebsauvage

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 punchup, le mardi 9 mars 2004 à 21:21:56
Merci, merci beaucoup...
Répondre à punchup
Logiciels pertinents trouvés dans les téléchargements
Télécharger Lupas Rename 5.0Lupas Rename - Lupas Rename est un programme permettant de renommer plusieurs fichiers à la fois. Les fonctionnalités de ce logiciel...Catégorie: Gestion de fichiers
Licence: Freeware/gratuit
Télécharger Métamorphose 1.1.0Métamorphose - Métamorphose est un logiciel libre (gratuit) permettant de renommer en masse des fichiers et des répertoires (batch...Catégorie: Gestion de fichiers
Licence: Open Source
Télécharger WinMerge 2.8.6WinMerge - WinMerge est un outil libre permettant de comparer visuellement des fichiers textes et de simplifier la fusion de leurs...Catégorie: Développement
Licence: Open Source
Télécharger Ant Renamer 2.10.0Ant Renamer - ANT Renamer permet de renommer un grand nombre de fichiers et dossiers en quelques clics. Il ne fait que modifier les noms...Catégorie: Gestion de fichiers
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Python et Caractères accentués »