Festlegen der Kodierung für die Pipe-Ausgabe in Python
Beim Piping von stdout stößt der Python-Interpreter auf ein Problem mit der Kodierung, was zu einem UnicodeEncodeError führt. Dies tritt auf, wenn ein Programm versucht, Unicode-Zeichen zu drucken, ohne die richtige Kodierung anzugeben.
Best Practice: Ausgabe beim Piping kodieren
Die Lösung besteht darin, die Ausgabe vorher manuell zu kodieren Rohrleitungen. Als Faustregel gilt, intern immer mit Unicode zu arbeiten und die Eingabe zu dekodieren und die Ausgabe zu kodieren. Zum Beispiel:
print(u"åäö".encode('utf-8'))
Dekodierung, Manipulation und Kodierung in einer Pipe-Sequenz
Ein praktisches Beispiel ist ein Python-Programm, das zwischen ISO-8859-1 und konvertiert UTF-8, Großschreibung des Textes:
import sys for line in sys.stdin: # Decode received input line = line.decode('iso8859-1') # Manipulate Unicode internally line = line.upper() # Encode output line = line.encode('utf-8') sys.stdout.write(line)
Standardeinstellung vermeiden Kodierung
Das Ändern von site.py oder das Festkodieren der Standardkodierung wird nicht empfohlen. Dies kann anderen Modulen schaden, die auf dem ASCII-Standard basieren. Es ist wichtig, die Ausgabe beim Weiterleiten explizit zu codieren, um die gewünschten Ergebnisse sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit UnicodeEncodeError um, wenn ich die Ausgabe in Python weiterleite?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!