|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : avril 2010 Messages : 19 ![]() |
Bonjour,
J'ai un problème d'encodage (Python 2.6.6): j'ai un fichier texte où les données sont enregistrées en iso-8859-15 (sous windows) contenant une unique ligne : Mon script est sous Linux : Code :
Code :
Code :
Comment faire pour faire une conversion correcte sans avoir à écrire d'hexa ? Merci d'avance !! |
||||||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 774 ![]() |
Bonjour,
Quelques règles simples vont te permettre de sortir de ton problème. 1- la ligne du haut de la page de code "# -*- coding: iso-8859-15 -*-" dit à l'interpréteur Python comment sont encodées les chaines de caractères "codées en dur" dans la page (genre x = "é"). Cela ne veut absolument pas dire que Python devra travailler en "iso-8859-15"! Et quand on écrit x = u"é", Python convertit en unicode le "é" de la page, initialement en "iso-8859-15". NB: si on met une telle ligne en haut de page, il est impératif que l'éditeur de texte utilisé édite et enregistre avec cet encodage, sinon, ça donne n'importe quoi. En cas de doute, il est intéressant de vérifier directement le fichier avec un éditeur hexa. 2- Avec Python 2.x, il faut travailler le plus possible en unicode, c'est à dire convertir le plus vite possible les données qui rentrent, et le plus tard possible le données qui sortent. Pour les données à échanger avec le disque, le module 'codecs' est très bon. Avec les autres entrées-sorties, il faut utiliser x.decode('iso-8859-15') pour convertir en unicode un 'x' initialement en 'iso-8859-15', et x.encode('iso-8859-15') pour convertir en 'iso-8859-15' un 'x' initialement en unicode. Voilà des exemples concrets: - créer un fichier texte comportant un "é" + fin de ligne, encodé 'iso-8859-15': Code :
Code :
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
||||
|
|
20
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : avril 2007 Messages : 239 ![]() |
Tyrtamos, je lis toujours tes postes sur l'encodage et celui-ci vient m'éclairer.
Il est vrai que je me demandais de quel encodage était question cette ligne : "# -*- coding: iso-8859-15 -*-". Dans mon esprit cela était flou entre les sorties fichiers, les variables texte, le codage du script dans l'éditeur. Donc merci Alex |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com