'utf8' codec kann nicht decodieren byte 0xf3
Ich bin mit python 2.7 Lesen der json-Datei. mein code ist
import json
from json import JSONDecoder
import os
path=os.path.dirname(os.path.abspath(__file__))+'/json'
print path
for root, dirs, files in os.walk(os.path.dirname(path+'/json')):
for f in files:
if f.lower().endswith((".json")):
fp=open(root + '/'+f)
data = fp.read()
print data.decode('utf-8')
Aber ich bekam die folgende Fehlermeldung.
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 72: invalid
continuation byte
JSON definiert ist, um die Verwendung von UTF-8 aber ein einsamer byte 0xF3 ist nicht gültig in einer UTF-8-multibyte-Sequenz. Ihre Datei ist kein gültiges UTF-8. Eine Allgemeine Problemumgehung ist, zu zwingen, eine andere Codierung, allgemein
Siehe auch die
Warum fügen Sie
Wenn hinzufügen, dass json, ist Es zu Fuß in das json-Verzeichnis.
Ist dort Weise, zu finden, die Codierung , durch das Lesen der Datei-Eigenschaften oder durch irgendwelche Mittel.
'latin-1'
, aber das wird im Grunde erstellen Sie falsche Ergebnisse statt. Wenn Sie wissen, dass die tatsächlichen Kodierung der Eingabe, mit allen Mitteln zu verwenden.Siehe auch die
character-encoding
wiki-tag für den hintergrund und Tipps zur Fehlerbehebung.Warum fügen Sie
/json
, dann ziehe es aus mit os.path.dirname()
nur fügen Sie es wieder zurück?Wenn hinzufügen, dass json, ist Es zu Fuß in das json-Verzeichnis.
Ist dort Weise, zu finden, die Codierung , durch das Lesen der Datei-Eigenschaften oder durch irgendwelche Mittel.
InformationsquelleAutor Rajiv | 2015-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Datei nicht in UTF-8 kodiert, und der Fehler tritt bei der
fp.read()
Linie. Sie verwenden müssen:Ist und die richtige, nicht-Plattform-abhängigen Nutzung für den Beitritt Pfade ist:
TypeError: 'encoding' ist ein ungültiges Schlüsselwort-argument für diese Funktion - Fehler bekam ich
Die Kodierung von keyword-spezifischen Python 3. Eine tragbare Lösung ist die Verwendung
FileIO.open()
Meine schlecht, ich habe nicht bemerkt, das war eine Python 2 Frage. Sie müssen einfach zu bedienen
io.open()
obwohl...Ja, Es funktioniert, wenn ich gab io.open(finame, encoding="latin-1")
InformationsquelleAutor Arcturus B