Ich habe dieses Problem versucht, alle Textknoten in einem HTML-Dokument mit lxml zu bekommen, aber ich bekomme einen UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 8995: ordinal not in range(128)
. Wenn ich jedoch versuche, die Art der Kodierung dieser Seite ( encoding = chardet.detect(response)['encoding']
) herauszufinden, heißt es utf-8
. Es scheint seltsam, dass eine einzelne Seite utf-8 und ascii hat. Eigentlich das:
löst das Problem.
Hier ist mein Code:
%Vor%Ausgabe:
%Vor%Was kann ich tun, um dieses Problem zu lösen ?. Denken Sie daran, dass ich dies mit ein paar anderen Seiten tun möchte, also möchte ich nicht auf einer individuellen Basis verschlüsseln.
UPDATE:
Vielleicht ist hier noch etwas anderes los. Wenn ich dieses Skript auf dem Terminal ausführe, erhalte ich eine korrekte Ausgabe, aber wenn ich es in SublimeText ausführe, bekomme ich UnicodeEncodeError ... ¿?
UPDATE2:
Es passiert auch, wenn ich eine Datei mit dieser Ausgabe erstelle. .encode('ascii', 'replace')
funktioniert, aber ich hätte gerne eine allgemeinere Lösung.
Grüße
Können Sie versuchen, Ihre Zeichenfolge mit repr () zu umhüllen? Dieser Artikel hilft möglicherweise.
%Vor%Was das Schreiben in eine Datei betrifft, wie in der Bearbeitung angegeben, würde ich empfehlen, die Datei mit dem Codecs-Modul zu öffnen:
%Vor%Ich kenne SublimeText nicht, aber es scheint zu versuchen, Ihre Ausgabe als ASCII zu lesen, daher der Kodierungsfehler.
Auf der Grundlage Ihrer ersten Aktualisierung würde ich sagen, dass das Terminal Python sagte, utf-8 und SublimeText auszugeben, dass es ascii erwartet. Ich denke, die Lösung besteht darin, die richtigen Einstellungen in SublimeText zu finden.
Wenn Sie jedoch nicht ändern können, was SublimeText erwartet, ist es besser, die Funktion encode
zu verwenden, wie Sie es bereits in einer separaten Funktion getan haben.
Sie können diese Funktion anstelle von print
verwenden. Beachten Sie, dass sich die Ausgabe Ihres Programms bei Ausführung in SublimeText von Terminal unterscheidet. Aufgrund der replace
akzentuierten Zeichen verlieren ihre Akzente, wenn dieser Code in SublimeText ausgeführt wird, z. é
wird als e
angezeigt.
Tags und Links python unicode encoding python-unicode urlfetch