Ich habe gerade begonnen, Python zu lernen, aber ich lief bereits in Schwierigkeiten.
Ich habe ein einfaches Skript mit nur einem Befehl:Python 3 UnicodeEncodeError: 'Ascii' Codec kann Zeichen nicht kodieren
#!/usr/bin/env python3
print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
Wenn ich versuche, dieses Skript auszuführen:
python3 hello.py
ich diese Meldung:
Traceback (most recent call last):
File "hello.py", line 2, in <module>
print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
ich Kubuntu bin mit 16.04 und Python 3.5.2. Als ich das versuchte: export PYTHONIOENCODING=utf-8
Es funktionierte aber nur vorübergehend. Das nächste Mal, als ich bash öffnete, bekam ich den gleichen Fehler.
Gemäß https://docs.python.org/3/howto/unicode.html#the-string-type ist die Standardcodierung für Python-Quellcode UTF-8.
Also habe ich die Quelldatei ID UTF-8 gespeichert, Konsole ist auf UTF-8 eingestellt, aber ich bekomme immer noch den Fehler!
Auch wenn ich
# -*- coding: utf-8 -*-
zum Anfang hinzufügen tut es nichts.
Eine andere seltsame Sache: wenn ich es nur mit Python, nicht mit Python3, es funktioniert. Wie ist es möglich, in Python 2.7.12 und nicht in 3.5.2 zu arbeiten?
Irgendwelche Ideen, um das dauerhaft zu lösen? Vielen Dank.
Es klingt wie Ihre Umgebung nicht richtig für UTF-8 konfiguriert ist. Deshalb verwendet Python beim Drucken von Unicode standardmäßig 'ASCII'. –
Mögliches Duplikat von [UnicodeEncodeError beim Schreiben in Datei] (http://stackoverflow.com/questions/32924147/unicodeencodeerror-when-writing-to-file) –
Ihr Gebietsschema muss beschädigt sein. Vielleicht setzt Ihre .bashrc 'LANG = cs_CZ.UTF-8', aber Sie haben das tschechische Gebietsschema nicht erstellt/installiert? Python verwendet standardmäßig die ASCII-Codierung, wenn das Gebietsschema unterbrochen ist oder fehlt. Der Grund, warum es in Python 2 funktioniert, ist, dass die Zeichenfolge eine Byte-Zeichenfolge ist und einfach direkt in Ihr Terminal geschrieben wird. Python 3 muss Zeichenfolgen beim Schreiben in das Terminal codieren. –