Fehler UnicodeDecodeError: 'utf-8' Codec kann das Byte 0xff in Position 0 nicht dekodieren: ungültiges Startbyte
https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
Fehler beim kompilieren "process.py" auf der oben genannten Website.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
Traceback (most recent call last):
File "tools/process.py", line 235, in <module>
main()
File "tools/process.py", line 167, in main
src = load(src_path)
File "tools/process.py", line 113, in load
contents = open(path).read()
File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Was ist die Ursache des Fehlers?
- Python-version ist 3.5.2.
InformationsquelleAutor der Frage pie | 2017-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python versucht konvertiert ein byte-array (ein
bytes
was es nimmt, um ein utf-8-kodierten string) für ein unicode-string (str
). Dieser Prozess ist natürlich eine Dekodierung nach utf-8 Regeln. Wenn er versucht, es auf eine byte-Sequenz, die nicht in utf-8-kodierte strings (nämlich dieses 0xff an position 0).Da Sie nicht jeder code, den wir betrachten konnte, konnten wir nur erraten, auf dem rest.
Aus der stack-trace können wir davon ausgehen, dass die auslösende Aktion war das Lesen aus einer Datei (
contents = open(path).read()
). Ich schlage vor, recode dies in einer Weise wie dieser:Dass
b
im Modus Planer in deropen()
besagt, dass die Datei wird so behandelt, als Binär, alsocontents
bleibt einbytes
. Keine Decodierung Versuch wird passieren auf diese Weise.InformationsquelleAutor der Antwort Alfe
Hatte ein Problem ähnlich wie diese, Endete mit UTF-16 zu entschlüsseln. mein code ist unten.
dies würde der Inhalt der Datei als import, aber er zurückkehren würde, den code in UTF-format. von dort aus würde es dekodiert werden und getrennt durch Linien.
InformationsquelleAutor der Antwort tattmoney76
Habe ich in diesem thread, wenn leiden unter den gleichen Fehler, nachdem ich einige der Forschung, die ich bestätigen kann, ist dies ein Fehler, der passiert, wenn Sie versuchen zu Dekodieren, die ein UTF-16-Datei mit UTF-8.
Mit UTF-16 die erste characther (2 bytes in UTF-16) ist ein Byte Order Mark (BOM), die als eine Dekodierung Hinweis und erscheint nicht als ein Zeichen in den decodierten string. Dies bedeutet, dass das erste byte wird entweder FE oder FF und das zweite die andere.
Stark bearbeitet, nach und nach fand ich heraus, die wahre Antwort
InformationsquelleAutor der Antwort Peter Ogden
Diese Lösung verwenden, wird es Streifen aus (ignorieren) die Charaktere und den string ohne Sie. Verwenden Sie diese Funktion nur, wenn Ihre Notwendigkeit ist, um Streifen Sie nicht bekehren.
Mit
errors='ignore'
Du wirst nur verlieren einige Charaktere. aber wenn Ihr nicht über diese, wie Sie zu sein scheinen zusätzliche Zeichen, die aus der schlechten Formatierung und Programmierung des clients, die eine Verbindung zu meinem socket server.
Dann seine eine einfache, direkte Lösung.
Referenz
InformationsquelleAutor der Antwort Nitish Kumar Pal
Überprüfen Sie den Pfad von der Datei gelesen werden. Mein code gehalten auf mir, Fehler, bis ich den Pfad geändert, Namen zu präsentieren Arbeitsverzeichnis. Der Fehler war:
InformationsquelleAutor der Antwort Rex131xO
Ich habe ein ähnliches problem. Ich versuche zu laufen, ein Beispiel in tensorflow/Modelle/objective_detection und erfüllt die gleiche Meldung.
Versuchen zu ändern, Python ist3, um Python2
InformationsquelleAutor der Antwort user8665083
Wenn möglich, öffnen Sie die Datei in einem text-editor und versuchen Sie, ändern Sie die Codierung auf UTF-8. Ansonsten Mach es über ein Programm auf OS-Ebene.
InformationsquelleAutor der Antwort Manoj Joshi