399 Stimmen

UnicodeDecodeError: Der 'utf8'-Codec kann das Byte 0xa5 an Position 0 nicht decodieren: ungültiges Startbyte

Ich verwende Skripte Python-2.6 CGI aber fand diesen Fehler im Serverprotokoll beim Aufruf von json.dumps(),

Traceback (most recent call last):
  File "/etc/mongodb/server/cgi-bin/getstats.py", line 135, in 
    print json.dumps(__getdata())
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 0: invalid start byte

Hier gibt die Funktion __getdata() ein Wörterbuch zurück.

Vor dem Posten dieser Frage habe ich diese Frage auf SO gelesen. Wie löse ich diesen Fehler?

38voto

shiva Punkte 4835

Diese Lösung hat bei mir funktioniert:

import pandas as pd
data = pd.read_csv("training.csv", encoding = 'unicode_escape')

28voto

Punnerud Punkte 5188

Von @aaronpenne und @Soumyaansh inspiriert

f = open("file.txt", "rb")
text = f.read().decode(errors='replace')

19voto

HimalayanCoder Punkte 9093

Legen Sie den standardmäßigen Encoder oben in Ihrem Code fest

import sys
reload(sys)
sys.setdefaultencoding("ISO-8859-1")

17voto

Gil Baggio Punkte 10839

Einfache Lösung:

import pandas as pd
df = pd.read_csv('file_name.csv', engine='python')

16voto

Zuo Punkte 161

Wenn die obigen Methoden nicht funktionieren, sollten Sie in Betracht ziehen, die Codierung der CSV-Datei selbst zu ändern.

Mit Excel:

  1. Öffnen Sie die CSV-Datei mit Excel
  2. Wechseln Sie zur Option Datei-Menü und klicken Sie auf Speichern unter
  3. Klicken Sie auf Durchsuchen, um einen Speicherort für die Datei auszuwählen
  4. Geben Sie den beabsichtigten Dateinamen ein
  5. Wählen Sie die Option *`CSV (durch Kommas getrennt) (.csv)`**
  6. Klicken Sie auf das Extras Dropdown-Menü und wählen Sie Weboptionen
  7. Wählen Sie unter dem Tab Codierung die Option Unicode (UTF-8) aus der Dropdown-Liste Dieses Dokument speichern als
  8. Speichern Sie die Datei

Mit dem Editor:

  1. Öffnen Sie die CSV-Datei mit dem Editor
  2. Wechseln Sie zu Datei > Speichern unter
  3. Wählen Sie als Nächstes den Speicherort für die Datei aus
  4. Wählen Sie die Option Dateityp als Alle Dateien(.)
  5. Geben Sie den Dateinamen mit der Erweiterung .csv an
  6. Wählen Sie im Dropdown-Menü Codierung die Option UTF-8
  7. Klicken Sie auf Speichern, um die Datei zu speichern

Indem Sie dies tun, sollten Sie in der Lage sein, CSV-Dateien zu importieren, ohne auf den UnicodeCodeError zu stoßen.

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