Gibt es einen guten Grund, warum ich alle meine Python-Programme damit nicht starten sollte? Gibt es etwas Besonderes verloren, wenn man so etwas macht?Stdout-Codierung in Python
#!/usr/bin/python
import os, sys
if sys.stdout.encoding == None:
os.putenv("PYTHONIOENCODING",'UTF-8')
os.execv(sys.executable,['python']+sys.argv)
print sys.stdout.encoding
Es gibt 60 questions about PYTHONIOENCODING also denke ich, es ist ein weit verbreitetes Problem ist, aber falls Sie nicht wissen, ist dies, weil getan, wenn sys.stdout.encoding == None
dann können Sie nur Zeichen Druck ascii, so z.B. print "åäö"
wirft eine Ausnahme ..
EDIT Dies passiert mir, wenn Stdout eine Pfeife ist; python encoding.py|cat
setzt die Codierung auf Keine
Eine andere Lösung ist, die codec of stdoutsys.stdout = codecs.getwriter('utf8')(sys.stdout)
zu ändern, die ich vermute, ist die richtige Antwort trotz der Kommentare zu dieser Frage.
Welche Plattform ist das, BTW? Nur aus Interesse. –
Siehe auch http://stackoverflow.com/questions/1473577/writing-unicode-strings-via-sys-stdout-in-python – Michael
Was * ist * stdout in diesen Fällen? Ein Rohr? Woher weißt du, dass, was auch immer das Rohr verbindet, UTF8 unterstützen kann? Es ist die Aufgabe von allem, was die Pipe anstellt, in diesem Fall 'PYTHONIOENCODING' zu spezifizieren. –