Wenn in Python3 ein UnicodeEncodeError auftritt
Ich benutze Python 2 seit ungefähr 7 Jahren, aber ich denke darüber nach, bald auf 3 umzusteigen.
In Python3 habe ich gehört, dass die Zeichenfolgen mit Unicode vereinheitlicht wurden, was es praktisch machte, aber ich bin auf einen UnicodeEncodeError gestoßen.
Das Betriebssystem ist Ubuntu 14.04.4 LTS und Python ist 3.5.2 von pyenv installiert. Der ausgeführte Code lautet Hello World.
hello_ja.py
# coding: utf-8
print("Hallo Welt")
Ergebnis
% python hello_ja.py
Traceback (most recent call last):
File "sample.py", line 4, in <module>
print("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
Bei der Python2-Serie musste ich viel Zeit mit Codecs verbringen, aber bei der 3-Serie sollte dies funktionieren ...
Memorandum- #sys in python3.std(in|out|err)Codierung erzwingen von Beim Lesen scheint es, als würde ich bei der Auswahl des Zeichencodes der Python3-Serie die Umgebungsvariable LANG betrachten.
Als ich die Umgebungsvariablen überprüfte, war es japanisches utf-8.
% export | grep LANG
LANG=ja_JP.UTF-8
Wenn LANG = C, war dies die Ursache, aber diesmal scheint es anders zu sein.
Als ich zu den Grundlagen zurückkehrte und überprüfte, ob die japanische Umgebung überhaupt installiert war, wurde das Sprachpaket ja nicht installiert. Ich habe es mit der englischen Version des Bildes installiert, also habe ich anscheinend vergessen, es einzulegen.
Installieren Sie das Paket und legen Sie das Standardgebietsschema gemäß [Ändern des Standardgebietsschemas von Debian / Ubuntu] fest (http://qiita.com/tailak/items/77b90a4df07e4f6a1fc2#2-2).
% sudo apt-get install language-pack-ja
% sudo update-locale LANG=ja_JP.UTF-8
Jetzt können Sie Japanisch korrekt drucken.
% python hello_ja.py
Hallo Welt
Recommended Posts