Próbuję uzyskać bardzo prosty przykład na OSXie z pythonem 3.5.1, ale naprawdę jestem zablokowany. Czytałem tak wiele artykułów, które dotyczą podobnych problemów, ale nie mogę tego naprawić samodzielnie. Czy masz jakieś wskazówki, jak rozwiązać ten problem?Python3: UnicodeEncodeError: Kodek 'ascii' nie może kodować znaków ' xfc'
Chciałbym mieć prawidłowe zakodowane wyjście latin-1 zdefiniowane w mojej liście bez żadnych błędów.
Mój kod:
# coding=<latin-1>
mylist = [u'Glück', u'Spaß', u'Ähre',]
print(mylist)
Błąd:
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)
Jak można naprawić ten błąd, ale jeszcze dostać coś z stdout (drukowanymi literami):
mylist = [u'Glück', u'Spaß', u'Ähre',]
for w in mylist:
print(w.encode("latin-1"))
Co otrzymuję jako wyjście:
b'Gl\xfcck'
b'Spa\xdf'
b'\xc4hre'
Co locale 'pokazuje mi:
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=
Co -> 'python3' pokazuje mi:
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'
działa poprawnie na mojej wersji Pythona 3.4 Windows: mylist = [u'Glück 'u'Spaß', u'Ähre ”] dla spawa w listy podr: druku (w) wyjściowa: Glück Spaß Ähre więc tutaj nie ma problemu. Zauważ, że jeśli użyjesz 'encode', otrzymasz typ' bytes', który nie jest ci potrzebny. –