373 Stimmen

Einstellen der richtigen Kodierung bei der Weiterleitung von stdout in Python

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X