Wenn die Ausgabe eines Python-Programms über die Pipeline geleitet wird, kommt der Python-Interpreter mit der Kodierung durcheinander und setzt sie auf None. Dies bedeutet, dass ein Programm wie dieses:
# -*- coding: utf-8 -*-
print u"åäö"
funktioniert bei normaler Ausführung einwandfrei, schlägt aber bei:
UnicodeEncodeError: 'ascii' Codec kann das Zeichen u' nicht kodieren \xa0 ' an Position 0: Ordnungszahl nicht im Bereich(128)
wenn sie in einer Rohrsequenz verwendet werden.
Wie funktioniert das am besten beim Verlegen von Rohrleitungen? Kann ich einfach sagen, es zu verwenden, was Kodierung der Shell/Dateisystem/was auch immer verwendet wird?
Die Vorschläge, die ich bisher gesehen habe, ist es, Ihre site.py direkt zu ändern, oder hardcoding die defaultencoding mit diesem Hack:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
Gibt es eine bessere Möglichkeit, Rohrleitungen zu verlegen?