491 Stimmen

UnicodeDecodeError, ungültiges Fortsetzungsbyte

Warum funktioniert der unten stehende Punkt nicht? Warum funktioniert es mit dem Codec "latin-1"?

o = "a test of \xe9 char" #I want this to remain a string as this is what I am receiving
v = o.decode("utf-8")

Daraus ergibt sich:

 Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
 File "C:\Python27\lib\encodings\utf_8.py",
 line 16, in decode
     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:
 'utf8' codec can't decode byte 0xe9 in position 10: invalid continuation byte

28voto

Patrick Mutuku Punkte 945

Wenn dieser Fehler bei der Bearbeitung einer gerade geöffneten Datei auftritt, prüfen Sie, ob Sie die Datei in 'rb' Modus

21voto

surya Punkte 141

Utf-8-Code-Fehler tritt normalerweise auf, wenn der Bereich der numerischen Werte 0 bis 127 überschreitet.

der Grund für diese Ausnahme ist:

1) Wenn der Codepunkt < 128 ist, entspricht jedes Byte dem Wert des Codepunkts. 2)Wenn der Codepunkt 128 oder größer ist, kann die Unicode-Zeichenkette nicht in dieser Kodierung dargestellt werden. (Python löst in diesem Fall eine UnicodeEncodeError-Ausnahme aus.)

Um dieses Problem zu lösen, gibt es eine Reihe von Kodierungen, die am weitesten verbreitete ist "Latin-1, auch bekannt als ISO-8859-1".

Die ISO-8859-1-Unicode-Punkte 0-255 sind identisch mit den Latin-1-Werten, so dass bei der Konvertierung in diese Kodierung einfach die Codepunkte in Byte-Werte umgewandelt werden müssen; wenn ein Codepunkt größer als 255 auftritt, kann die Zeichenfolge nicht in Latin-1 kodiert werden.

Wenn diese Ausnahme beim Laden eines Datensatzes auftritt, versuchen Sie, dieses Format zu verwenden

df=pd.read_csv("top50.csv",encoding='ISO-8859-1')

Fügen Sie am Ende der Syntax ein Kodierungsverfahren hinzu, das dann das Laden des Datensatzes akzeptiert.

13voto

Aditya Aggarwal Punkte 140

Nun diese Art von Fehler kommt, wenn u nehmen Eingabe eine bestimmte Datei oder Daten in Pandas wie: -

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv)

Dann wird der Fehler wie folgt angezeigt :- UnicodeDecodeError: 'utf-8' codec kann Byte 0xf4 an Position 1 nicht dekodieren: ungültiges Fortsetzungsbyte

Um diese Art von Fehler zu vermeiden, kann ein Argument hinzugefügt werden

data=pd.read_csv('/kaggle/input/fertilizers-by-product-fao/FertilizersProduct.csv', encoding='ISO-8859-1')

11voto

Alon Gouldman Punkte 2343

Das ist mir auch passiert, als ich einen Text auf Hebräisch aus einer .txt Datei.

Ich habe geklickt: file -> save as und ich habe diese Datei als UTF-8 Kodierung

5voto

malvoisen Punkte 118

TLDR: Ich würde empfehlen, die Ursache des Problems eingehend zu untersuchen, bevor Sie den Geber wechseln, um den Fehler zu beheben.

Dieser Fehler trat auf, als ich eine große Anzahl von Zip-Dateien mit zusätzlichen Zip-Dateien darin verarbeitete.

Mein Arbeitsablauf war der folgende:

  1. Reißverschluss lesen
  2. Kinder-Zip lesen
  3. Text vom Kinder-Zip lesen

Irgendwann habe ich den obigen Kodierungsfehler entdeckt. Bei näherer Betrachtung stellte sich heraus, dass einige Child-Zips fälschlicherweise weitere Zips enthielten. Das Lesen dieser Zips als Text führte zu einer merkwürdigen Zeichendarstellung, die ich mit folgenden Mitteln beheben konnte encoding="latin-1" was aber im weiteren Verlauf zu Problemen führte. Da ich mit internationalen Daten arbeitete, war es nicht ganz dumm, anzunehmen, dass es sich um ein Kodierungsproblem handelte (ich hatte Probleme mit 0xc2: Â ), aber das war letztlich nicht das eigentliche Thema.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X