UnicodeDecodeError: 'utf-8' Codec kann Byte nicht dekodieren

Hier ist mein Code,

for line in open('u.item'):
#read each line

Wenn ich diesen Code ausführe, wird folgende Fehlermeldung angezeigt:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

Ich habe versucht, dieses Problem zu lösen, indem ich einen zusätzlichen Parameter in open() einfügte. Der Code sieht wie folgt aus

for line in open('u.item', encoding='utf-8'):
#read each line

Aber wieder gibt es den gleichen Fehler. Was soll ich dann tun? Bitte helfen Sie mir.

Lösung

Wie von Mark Ransom vorgeschlagen, habe ich die richtige Kodierung für dieses Problem gefunden. Die Kodierung war "ISO-8859-1", so dass das Ersetzen von open("u.item", encoding="utf-8") durch open('u.item', encoding = "ISO-8859-1") das Problem lösen wird.

Kommentare (6)

Ihre Datei enthält nicht wirklich utf-8 kodierte Daten, sondern eine andere Kodierung. Finden Sie heraus, welche Kodierung das ist, und verwenden Sie sie im open-Aufruf.

In der Windows-1252-Kodierung wäre 0xe9 zum Beispiel das Zeichen é.

Kommentare (2)

Falls jemand danach sucht, hier ein Beispiel für die Konvertierung einer CSV-Datei in Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
Kommentare (0)