OVH Cloud OVH Cloud

Pb encodage et import

6 réponses
Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Pb import et encodage.

Soit deux scripts, "i1.py" et "i2.py" (attention, ils sont très compliqués)
:

i1.py :
import i2
print i2.GlobalA

i2.py :
GlobalA ="azerty"


Lorsqu'on lance i1.py, ça marche. Python, c'est fabuleux !





Ah, oui, il y a quand même un truc. Si on ajoute des encodages par défaut
(genre # -*- coding: cp1252 -*-), des fois ça marche, des fois ça accroche.



Résumé :


i1.py :
import i2
print i2.GlobalA

i2.py :
GlobalA = "azerty"

OK

==============================

i1.py :
import i2
print i2.GlobalA

i2.py :
# -*- coding: cp1252 -*-

GlobalA = "azerty"

SyntaxError

==============================

i1.py :
import i2
print i2.GlobalA

i2.py :
# -*- coding: utf-8 -*-

GlobalA = "azerty"

OK

==============================

i1.py :
# -*- coding: utf-8 -*-

import i2
print i2.GlobalA

i2.py :
# -*- coding: utf-8 -*-

GlobalA = "azerty"

OK

==============================

i1.py :
# -*- coding: utf-8 -*-

import i2
print i2.GlobalA

i2.py :
# -*- coding: cp1252 -*-

GlobalA = "azerty"

SyntaxError

==============================

i1.py :
# -*- coding: utf-8 -*-

import i2
print i2.GlobalA

i2.py :
GlobalA = u"azérty" #noter l'accent et l'unicode

OK

==============================

i1.py :
# -*- coding: utf-8 -*-

import i2
print i2.GlobalA

i2.py :
# -*- coding: utf-8 -*-

GlobalA = u"azérty" #noter l'accent et l'unicode

UnicodeDecodeError

==============================


Je précise que, dans tous les cas, les fichiers sont enregistrés en ANSI.
Tous les tests ont été faits avec Python 2.4, sous W-XP, et dans l'Ardèche,
avec un portable, sur lequel j'ai tapé les scripts, avec mes petits doigts
trapus.


Des avis, ou des suggestions ?



--
Michel Claveau

6 réponses

Avatar
Wilk
"Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle." writes:

Bonsoir !

Pb import et encodage.

...



Je précise que, dans tous les cas, les fichiers sont enregistrés en ANSI.


Si tu spécifie un encodage, il faut que tes fichiers soient enregistrés
dans cet encodage. Tu as utilisé un éditeur qui te permet de changer le
format d'enregistrement ?

--
William - http://flibuste.net

Avatar
F. Petitjean
Le Thu, 6 Jan 2005 22:10:33 +0100, Michel Claveau -
Bonsoir !

Pb import et encodage.

Soit deux scripts, "i1.py" et "i2.py" (attention, ils sont très compliqués)
:
snip


Ah, oui, il y a quand même un truc. Si on ajoute des encodages par défaut
(genre # -*- coding: cp1252 -*-), des fois ça marche, des fois ça accroche.

Résumé :

snip

i1.py :
import i2
print i2.GlobalA

i2.py :
# -*- coding: cp1252 -*-

GlobalA = "azerty"

SyntaxError

Chez moi ça marche (tm) Pourriez-vous préciser le message exact (numéro

de ligne) etc ....

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !


Pour ce cas précis, j'ai ça :





i1.py :
import i2
print i2.GlobalA

i2.py :
# -*- coding: cp1252 -*-

GlobalA = "azerty"



Traceback (most recent call last):
File "D:devPythoni1.py", line 1, in ?
import i2
File "D:devPythoni2.py", line 3

^
SyntaxError: invalid syntax
Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Effectivement, cela règle le problème de l'unicodeDecode Error.

Merci.




Reste les autres cas.
--
Michel Claveau
Avatar
F. Petitjean
Le Thu, 6 Jan 2005 23:48:49 +0100, Michel Claveau
Bonsoir !


Pour ce cas précis, j'ai ça :


i1.py :
import i2
print i2.GlobalA

i2.py :
# -*- coding: cp1252 -*-

GlobalA = "azerty"



Traceback (most recent call last):
File "D:devPythoni1.py", line 1, in ?
import i2
File "D:devPythoni2.py", line 3

^
SyntaxError: invalid syntax
il semblerait que vous ne commencez pas en colonne 1. C'est

rédhibitoire.

Cordialement.

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !

Je commence bien les lignes en colonne 0. Le problème ne vient pas de là,
comme le prouve le fait que changer simplement "cp1252" par "utf-8" supprime
l'erreur.

@+
--
Michel Claveau