#1 Tue 28 October 2014 16:46
- Laurent Frilleux
- Participant actif
- Lieu: Aniane
- Date d'inscription: 8 Sep 2005
- Messages: 83
ARCGIS 10 Python Pb encodage caractère
Bonjour
J'ai un problème de calcul de champ dans un script python. J'ai le message d'erreur suivant : "UnicodeEncodeError: 'ascii' codec can't encode character u'\xe2' in position 2: ordinal not in range<128>"
Les données que je veux calculer ont la mauvaise idée d'avoir des accents. Elles sont toutes stockées dans des gdb.
Savez vous comment on peut contourner ce pb sachant qu'il me faut conserver les accents.
Merci
Laurent Frilleux
Immergis - Montpellier
Hors ligne
#2 Tue 28 October 2014 17:32
Re: ARCGIS 10 Python Pb encodage caractère
Bonjour,
C'est lié au fait que Python travaille en Unicode (en français, cette ressource est assez synthétique : Charsets et encoding).
Il faudrait peut-être écrire quelque chose du genre : str.decode('iso-8859-1') ou str.encode('utf-8') en indiquant l'encodage de la source de données
Normalement les caractères sont stockée en Unicode (UTF-8, UTF-16 ou UTF-32) dans les geodatabases (ici et là)
Quel genre de calcul est réalisé en Python ?
A+
Franck
Hors ligne
#3 Wed 29 October 2014 08:10
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: ARCGIS 10 Python Pb encodage caractère
Bonjour,
parfois c'est juste un probleme d'affichage de données lors d'un print
Moi j'ai pris l'habitude de commencer tous mes scripts par (en première ligne obligatoirement)
Code:
#-*-coding:Latin-1 -*-
voici un lien plutôt pas mal détaillé sur la question: http://sametmax.com/lencoding-en-python … our-toute/
A+
Nicolas GRANIER
Dernière modification par Nicolas Granier (Wed 29 October 2014 08:11)
Hors ligne
#4 Wed 29 October 2014 09:01
Re: ARCGIS 10 Python Pb encodage caractère
Bonjour Nicolas,
Le lien sur sametmax est effectivement lui aussi bien détaillé mais pourquoi alors tu mets :
Code:
#-*-coding:Latin-1 -*-
en début de script alors que Sam conseille de travailler tout le temps en UTF-8 et de mettre en début de fichier :
Code:
# -*- coding: utf8 -*-
?
A+
Franck
Hors ligne
#5 Wed 29 October 2014 11:01
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: ARCGIS 10 Python Pb encodage caractère
Bonjour Franck,
je mets Latin-1 car cela correspond aux caractères occidentaux donc ceux que nous avons l'habitude de manipuler (ceux que j'ai l'habitude de manipuler plutôt). Dans 99.8% des cas cela fonctionne très bien (pas de bug sur les accents, la cédille, le chapeau,...)
Lorsque j'ai un problème d'encodage même en mettant la ligne #-*-coding:Latin-1 -*-, ce n'est pas la modification en utf8 qui me permets de m'en sortir. Ce sont souvent des mauvaises interprétations de l'encodage de fichiers externes que l'on parcourt en python.
En mettant # -*- coding: utf8 -*-, mon sentiment est de mettre un "fourre-tout", on prend le conteneur le plus grand et on ferme les yeux en disant que de toute façon le caractère doit bien être dedans. En mettant Latin-1, je me dis que dans mon cas d'utilisation je borne mon code à des caractères occidentaux que j'utilise et que si j'ai une erreur elle vient d'un problème d'encodage plus complexe que la simple déclaration en Latin1.
A+
Nicolas
Hors ligne
#6 Wed 29 October 2014 17:42
- Laurent Frilleux
- Participant actif
- Lieu: Aniane
- Date d'inscription: 8 Sep 2005
- Messages: 83
Re: ARCGIS 10 Python Pb encodage caractère
Bonjour
Merci pour vos réponses, j'ai essayé sans trop de succès de modifier les encodages en utf8 et Latin-1.
Finalement en modifiant un peu le script, cela à l'air de fonctionner sans trop que je comprenne pourquoi je l'avoue.
J'avais en fait, des conversions en chaine inutile et ce sont ces éléments qui une fois supprimé ont permis le calcul des champs.
Merci encore
Laurent Frilleux
Immergis - Montpellier
Hors ligne