Python3: UnicodeEncodeError: 'ascii' codec ne peut pas encoder les caractères '\xfc'
Je suis d'essayer d'obtenir l'exécution d'un exemple très simple sur OSX avec python 3.5.1 mais je suis vraiment coincé. Avoir lu beaucoup d'articles qui traitent des problèmes similaires mais je ne peux pas résoudre ce problème par moi-même. Avez-vous des conseils sur la façon de résoudre ce problème?
Je voudrais avoir le bon codé en latin-1 sortie tel que défini dans maliste sans erreurs.
Mon code:
# coding=<latin-1>
mylist = [u'Glück', u'Spaß', u'Ähre',]
print(mylist)
L'erreur:
Traceback (most recent call last):
File "/Users/abc/test.py", line 4, in <module>
print(mylist)
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 4: ordinal not in range(128)
Comment je peux corriger l'erreur, mais encore obtenir quelque chose de mal avec stdout (impression):
mylist = [u'Glück', u'Spaß', u'Ähre',]
for w in mylist:
print(w.encode("latin-1"))
Ce que j'obtiens en sortie:
b'Gl\xfcck'
b'Spa\xdf'
b'\xc4hre'
Ce "locale" montre moi:
LANG="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_CTYPE="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_ALL=
Ce
-> "python3" montre moi:
Python 3.5.1 (default, Jan 22 2016, 08:54:32)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
Fonctionne très bien sur mon python 3.4 version de windows: maliste = [u'Glück', u'Spaß', u'Ähre',] pour w dans ma liste: print(w) puissance de sortie: Glück Spaß Ähre donc pas de problème ici. Notez que si vous utilisez
encode
vous obtenez un bytes
type, pas ce que vous voulez.OriginalL'auteur Hans Bondoka | 2016-08-10
Vous devez vous connecter pour publier un commentaire.
Supprimer les caractères
<
et>
:Ces caractères sont souvent utilisés dans les exemples pour indiquer où le nom d'encodage va, mais les caractères
<
et>
ne devrait pas être inclus dans votre fichier.Pour que cela fonctionne, votre fichier doit être codé à l'aide de latin-1. Si votre fichier est encodé en utf-8, la ligne de codage doit être
Par exemple, quand je lance ce script (enregistré dans un fichier avec le codage latin-1):
- Je obtenir cette sortie (sans erreurs):
Que le résultat semble correct. Par exemple, le codage latin-1 de ü est
'\xfc'
.J'ai utilisé mon éditeur pour enregistrer le fichier avec le codage latin-1. Le contenu du fichier en hexadécimal:
Noter que le premier octet (représenté en hexadécimal) dans la troisième ligne (c'est à dire le caractère à la position 0x20) est
fc
. C'est le codage latin-1 de ü. Si le fichier a été encodée en utf-8, le caractère ü serait représenté à l'aide de deux octets,c3 bc
.OriginalL'auteur Warren Weckesser
Essayez de lancer votre script explicitement défini
PYTHONIOENCODING
variable d'environnement:OriginalL'auteur markhor
Vos variables d'environnement mal réglé. Le travail est pour moi:
OriginalL'auteur Mowshon