Warum erhalte ich diesen Fehler, wenn ich versuche, etwas in Putty zu drucken?
Frage
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
Ich bin eine Website herunterzuladen und dann seinen Inhalt Drucken ... einfach. Muss ich es irgendwie kodieren?
Lösung
Versuchen utf-8 für Start. Website haben Sie vielleicht andere charset als ANSI herunterladen und diese zusätzlichen Zeichen können nicht auf der Konsole gedruckt werden.
So in Ort, wo man print text
tun, anstatt sie print text.encode('utf-8')
.
Andere Tipps
Vergewissern Sie sich, Putty konfiguriert UTF-8 kodierten Daten zu übernehmen.
print
ing Sachen auf die Standardausgabe kann problematisch sein, weil Python oft nicht weiß, welchen Charakter das System codiert, verwendet. Angesichts dieser Python 2 übernimmt die konservativste Wahl, ASCII USA. Also, wenn Sie versuchen, eine Zeichenfolge zu drucken, die Zeichen enthält, die nicht in ASCII ist, wie die U + 2019 Smart-Zitat ’
, es gibt Ihnen diesen Fehler.
In Python 3 die Standard-charset Vermutung für sys.stdout.encoding
ist UTF-8. Wenn Sie sicher sind, dass die Standardausgabe (. Dh PuTTY in Ihrem Fall) sollte UTF-8, nehmen dann ja Sie können es kodieren explizit:
print content.encode('UTF-8')