--Starten Sie mit python -X utf8
--Wenn dies nicht funktioniert, setzen Sie die Umgebungsvariable und den Variablennamen PYTHONIOENCODING
und den Wert utf-8
.
"Dieser Artikel wurde für Benutzer geschrieben, die Python3.8.0 bis Python3.8.2 unter Windows verwenden. Ich weiß nichts über Python3.7 oder früher oder neuer als Python3.8.2. "" Ich wage es, es so zu erklären.
Bis Sie zu diesem Artikel kommen
UnicodeDecodeError
gemobbt werdensys.stdout = io.TextIOWrapper (sys.stdout.buffer, encoding = 'utf-8')
und ausIst es nicht?
Anscheinend
** sys.stdout.buffer
scheint von 3.8 ** (?) veraltet zu sein.
auf diesen Beweisen,
Wenn Sie Leute fragen, die auf diese Weise arbeiten, sagen sie 3.7 oder früher, und wenn Sie Leute fragen, die auf diese Weise versagen, sagen sie 3.8. (Es kann ein Zufall sein, weil ich es nicht richtig untersucht habe. Es tut mir leid, wenn dies der Fall ist.)
Es ist verwirrend, weil die Informationen älter als 3.8 "für 3.x" oder "für 3" lauten. Zu der Zeit, als 3.6 und 3.7 die neuesten waren, dachte ich nicht, dass sich die Spezifikationen mit 3.8 ändern würden, also scheint es, dass es verallgemeinert wurde. Von nun an möchte ich, dass Sie etwas wie "für Python3.0-3.7" sagen, anstatt "für Python3".
Laut https://qiita.com/butada/items/33db39ced989c2ebf644 besteht die Standardausgabe aus shift_jis in Windows 10 und früheren Versionen.
Wenn Sie python3.8.2 oder früher unter Windows ausführen, wird ** unabhängig vom Zeichencode in Python zum Zeitpunkt der Ausgabe automatisch in shift_jis konvertiert **. Während dieses Vorgangs tritt ein Fehler auf.
(Übrigens ist in python3 ~ 3.8.2 der Zeichencode vom Typ str auf utf-8 festgelegt.
Es gab auch ein Schwarzes Brett, das " # encoding: utf-8
"vorschlug, aber dies ist die Spezifikation der Quellcodierung.
Wenn Sie in Python3.7-3.8.2 "Python" von der Konsole aus starten, können Sie es im "UTF-8-Modus" starten, indem Sie die Option "-X utf8" hinzufügen. Hier wird die Nachahmung wie "automatisch in shift_jis konvertieren" gestoppt.
・ Wenn Sie http.server verwenden möchten, reicht dies übrigens nicht aus.
Setzen Sie die Umgebungsvariable auf den Variablennamen PYTHONIOENCODING
und den Wert utf-8
.
Recommended Posts