OVH Cloud OVH Cloud

Nouveau Python, nouveaux pb d'encodages

2 réponses
Avatar
Méta-MCI
Bonjour !


C'est reparti, comme en 2004 !


Je suis passé à Python 2.5, et je tombe (encore) sur de nouveaux problèmes
d'encodage des scripts.

Alors que tout marchait bien avec Python 2.4.x j'ai maintenant des
problèmes, lorsque je fais un
execfile("toto.py",globals(),globals())
à partir d'un script encodé en utf-8, si le fichier "toto.py" est encodé en
cp1252 (avec l'en-tête qui va bien).

En le convertissant en utf-8 (et en adaptant l'en-tête), le problème
disparaît.

Au passage, le message obtenu, c'est :
"Erreur de syntaxe lig. 3" or, la ligne 3 est... vide !



Ce n'était pas une question, mais juste une indication, pour ceux qui
tomberaient sur le même genre de problèmes.

Bonne journée.

MCI

2 réponses

Avatar
Amaury Forgeot d'Arc
Bonjour !


Bonjour,

Je suis passé à Python 2.5, et je tombe (encore) sur de nouveaux problèmes
d'encodage des scripts.

Alors que tout marchait bien avec Python 2.4.x j'ai maintenant des
problèmes, lorsque je fais un
execfile("toto.py",globals(),globals())
à partir d'un script encodé en utf-8, si le fichier "toto.py" est encodé en
cp1252 (avec l'en-tête qui va bien).

En le convertissant en utf-8 (et en adaptant l'en-tête), le problème
disparaît.

Au passage, le message obtenu, c'est :
"Erreur de syntaxe lig. 3" or, la ligne 3 est... vide !



Ce n'était pas une question, mais juste une indication, pour ceux qui
tomberaient sur le même genre de problèmes.



J'ai essayé de reproduire ton problème (un bug python, ce n'est pas si
courant, et un item à son nom dans SourceForge c'est un peu une
médaille), mais sans succès.
J'ai créé:
- un fichier test.py qui contient:
# -*- coding: utf-8 -*-
execfile("test2.py")
- un fichier test2.py qui contient:
# -*- coding: cp1252 -*-
print u"Héhé"
(Evidemment dans l'encoding qui va bien pour chaque, merci Emacs)
Et le tout ("python test.py") s'exécute sans souci.

Ton problème vient peut-être d'ailleurs ?

--
Amaury

Avatar
Michel Claveau
Bonsoir !

Effectivement, sur d'autres tests, ça marche (comme toi).

Cependant, avec mes deux (très gros) scripts à l'origine du problème,
il y a bien une histoire liée à l'encodage. Et c'est reproductible et
systématique. Sur le 2e script, en ne modifiant que la première ligne
et l'encodage à la sauvegarde :
# -*- coding: utf-8 -*- ça marche
# -*- coding: cp1252 -*- ça plante

En plus, j'ai lu qq part que l'absence d'encodage par défaut était
maintenant (avec P 2.5) considéré comme une erreur de syntaxe (ça
correspond à mon message d'erreur, ce qui ne doit pas être une simple
coïncidence).


--
@-salutations

Michel Claveau