Achten Sie beim Drucken von Japanisch mit Python 3 auf LANG für UnicodeEncodeError

Zusammenfassung

Wenn in Python3 ein UnicodeEncodeError auftritt

Phänomen

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 ...

Gegenmaßnahmen

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

Achten Sie beim Drucken von Japanisch mit Python 3 auf LANG für UnicodeEncodeError
(Hinweis) Seien Sie vorsichtig mit Python Argparse
[Python] Seien Sie vorsichtig, wenn Sie Druck verwenden
UnicodeEncodeError hat Probleme mit der Standardausgabe von Python3
Seien Sie vorsichtig, wenn Sie CakePHP3 mit PHP7.2 ausführen
[Python-Memo] Seien Sie vorsichtig, wenn Sie ein zweidimensionales Array erstellen (Liste der Listen).
Achten Sie beim Erstellen einer Bildmaske mit Numpy auf den Typ
Untersuchung beim Import kann nicht mit Python durchgeführt werden
Seien Sie vorsichtig, wenn Sie mit gzip-komprimierten Textdateien arbeiten
Achten Sie beim Benennen von Variablen in Python nicht nur auf reservierte Wörter, sondern auch auf Konflikte mit integrierten Funktionen.
Problemumgehung für Flask-Mail, die keine japanische UTF-8-Mail sendet (Python3)
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Seien Sie vorsichtig, wenn Sie die Eigenvektoren einer Matrix unterscheiden
Seien Sie vorsichtig beim Lesen von Daten mit Pandas (geben Sie dtype an)
Zusammenfassung der Tools zum Betreiben der Windows-Benutzeroberfläche mit Python
Japanische Ausgabe beim Umgang mit Python im Visual Studio
Vorsichtsmaßnahmen bei der Berechnung mit Zeichenfolge für TmeStampType von PySpark
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!
So protokollieren Sie mit Python (wenn für den Logger keine Handler gefunden wurden "__main__" wird angezeigt)
Lösung, wenn das Bild mit tkinter [python] nicht angezeigt werden kann
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Simulieren Sie mit Python verspätete Schäden für kriminelle Kinderbetreuungskosten
Drehen Sie ein Array von Zeichenfolgen mit einer for-Anweisung (Python3).
Vermeiden Sie UnicodeEncodeError, wenn Sie Abfragen mit Japanisch in MySQLdb von Python auslösen
[Einführung in Udemy Python3 + Application] 51. Seien Sie vorsichtig mit Standardargumenten
Japanische morphologische Analyse mit Python
Fehler beim Spielen mit Python
tesseract-OCR für Python [japanische Version]
Hier finden Sie eine Zusammenfassung der Dinge, die beim Umgang mit komplexen Zahlen in Python hilfreich sein können
Wie man Japanern nicht entgeht, wenn man mit json in Python umgeht
Mechanismus zur automatischen Flusenprüfung mit flake8 beim Festschreiben von Python-Code
Seien Sie vorsichtig, wenn Sie den Standardargumentwert in der Python 3-Serie angeben
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[Lass uns mit Python spielen] Ziel ist die automatische Satzgenerierung ~ Abschluss der automatischen Satzgenerierung ~
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Memorandum beim Ausführen von Python auf EC2 mit Apache
Ein Memo für die Installation von pip3 mit python2.7 aus irgendeinem Grund
TensorFlow 2.2 kann nicht mit Python 3.8 installiert werden!
Seien Sie vorsichtig mit einfachen Methodenreferenzen
Erste Schritte mit Python für PHPer-Klassen
Erste Schritte mit Python Grundlagen von Python
Lebensspiel mit Python! (Conways Spiel des Lebens)
10 Funktionen von "Sprache mit Batterie" Python
4. Nacht der Schleife mit für
Sprechen Sie japanischen Text mit OpenJTalk + Python
Seien Sie vorsichtig mit Pythons Append-Methode
Implementierung der Dyxtra-Methode durch Python
Erste Schritte mit Python3
Wenn matplotlib nicht mit python2.7 funktioniert
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Erste Schritte mit Python für PHPer-Funktionen
Aufzeichnung der Python-Einführung für Neulinge
Bei Verwendung von MeCab mit virtualenv python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
[Python] Format, wenn to_csv mit Pandas
Grundlegendes Studium von OpenCV mit Python
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
Nützlich für den Alltag !? Halbautomatisierung der stärksten experimentellen Planungsmethode von COSPA mit Python
Seien Sie vorsichtig, wenn Sie in regelmäßigen Abständen Tweets mit der Twitter-API abrufen