Heim >Backend-Entwicklung >Python-Tutorial >Wie behebe ich einen „UnicodeDecodeError' beim Lesen von Textdateien in Python?

Wie behebe ich einen „UnicodeDecodeError' beim Lesen von Textdateien in Python?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-13 00:18:22473Durchsuche

How to Fix a 'UnicodeDecodeError' When Reading Text Files in Python?

Behebung von „UnicodeDecodeError“ und Codierungskonvertierung

Beim Versuch, in einer Textdatei gespeicherte Daten zu manipulieren, ist der folgende Fehler aufgetreten:

Traceback (most recent call last):  
File "SCRIPT LOCATION", line NUMBER, in <module>  
    text = file.read()
File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode  
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 2907500: character maps to `<undefined>`  

Dieser Fehler ist auf eine Diskrepanz zwischen der angenommenen Kodierung (CP1252) und der tatsächlichen Kodierung der Datei zurückzuführen. Um dieses Problem zu lösen, müssen wir die richtige Kodierung identifizieren und beim Öffnen der Datei explizit angeben.

Identifizieren der Dateikodierung

Wie in der Frage angegeben, bestimmend Die Kodierung der Datei ist entscheidend. Leider muss dies manuell erfolgen. Zu den gängigen Kodierungen gehören Latin-1 und UTF-8. Da 0x90 jedoch kein gültiges Zeichen in Latin-1 ist, ist UTF-8 ein guter Kandidat.

Angabe der Kodierung

Sobald Sie die Kodierung festgelegt haben , Sie können es beim Öffnen der Datei mit dem Kodierungsparameter angeben:

file = open(filename, encoding="utf8")

Durch die Bereitstellung der richtigen Kodierung kann Python ordnungsgemäß funktionieren Dekodieren Sie die Textdatei und ermöglichen Sie Ihnen, ihren Inhalt zu bearbeiten, ohne auf die Ausnahme „UnicodeDecodeError“ zu stoßen.

Das obige ist der detaillierte Inhalt vonWie behebe ich einen „UnicodeDecodeError' beim Lesen von Textdateien in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn