So ändern Sie den stdin-und stdout-encoding für Python 2
Ich bin mit Windows-und Linux-Maschinen für das gleiche Projekt. Die Standard-Kodierung für stdin auf Windows ist cp1252 und unter Linux ist utf-8.
Ich würde gerne alles ändern auf utf-8.
Ist es möglich? Wie kann ich es tun?
Diese Frage ist über Python 2 und Python 3, siehe Python 3: Wie Sie angeben, encoding von stdin
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, indem Sie nicht unter Berufung auf die implizite Codierung beim Druck die Dinge. Nicht sich auf dass ist eine gute Idee, auf jeden Fall -- der implizite Codierung wird nur verwendet, wenn Druck auf stdout und wenn die Standardausgabe mit einem terminal verbunden ist.
Ein besserer Ansatz ist die Verwendung
unicode
überall, und verwenden Siecodecs.open
odercodecs.getwriter
überall. Sie wickelnsys.stdout
in ein Objekt, das automatisch verschlüsselt Ihre unicode-strings in UTF-8 verwenden, zum Beispiel:Wird dies nur funktionieren, wenn Sie unicode verwenden, überall, aber. So, die Verwendung der unicode-überall. Wirklich, überall.
codecs.getreader('utf-8')(sys.stdin)
wenn Sie es wirklich wollen.Dies ist eine alte Frage, aber nur zur Referenz.
Lesen
UTF-8
ausstdin
verwenden:Schreiben
UTF-8
zustdout
verwenden:Python erkennt automatisch das encoding von stdin. Der einfachste Weg, die ich gefunden habe, um anzugeben, eine Codierung, wenn die automatische Erkennung nicht richtig funktioniert, ist die Verwendung der PYTHONIOENCODING environment-Variablen, wie im folgenden Beispiel:
Weitere Informationen über die encoding-Erkennung und diese variable auf verschiedenen Plattformen kann man sich die sys.stdin Dokumentation.
In python 3.7 und neuer können Sie
sys.stdin.reconfigure(encoding='utf-8')
finden
py2:https://stackoverflow.com/a/4546129/7721525
py3:https://stackoverflow.com/a/16549381/7721525