'utf-8' codec kann nicht decodieren byte 0x80
Ich versuche, download BVLC ausgebildete Modell, und ich bin stecken mit diesem Fehler
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 110: invalid start byte
Ich denke, es ist, weil die folgende Funktion (vollständige code)
# Closure-d function for checking SHA1.
def model_checks_out(filename=model_filename, sha1=frontmatter['sha1']):
with open(filename, 'r') as f:
return hashlib.sha1(f.read()).hexdigest() == sha1
Irgendeine Idee, wie man dieses Problem beheben?
Die Fehlermeldung ist ziemlich eindeutig. Entweder die Datei ist nicht UTF-8, oder es ist beschädigt.
Das ist das, was ich habe, wenn ich versuchen zu drucken
Interessant. Also, was passiert, wenn Sie geben Sie der Datei die Kodierung explizit? So etwas wie
Ich habe versucht, ändern die 2. Zeile mit dieser
Nein, Sie nicht sagen, Python ist es UTF8. Es sei denn, Sie sind sicher, dass es sein sollte - aber Python ist Ihnen, daß es ist nicht gültige UTF8, sondern etwas anderes. Öffnen Sie die Datei mit einem guten code-editor und sehen, was drin ist.
Das ist das, was ich habe, wenn ich versuchen zu drucken
f
<_io.TextIOWrapper name='models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel' mode='r' encoding='utf8'>
Interessant. Also, was passiert, wenn Sie geben Sie der Datei die Kodierung explizit? So etwas wie
open(filename, 'r', encoding='utf8')
?Ich habe versucht, ändern die 2. Zeile mit dieser
with open(filename, 'r', encoding='utf8') as f:
aber ich habe die gleiche errNein, Sie nicht sagen, Python ist es UTF8. Es sei denn, Sie sind sicher, dass es sein sollte - aber Python ist Ihnen, daß es ist nicht gültige UTF8, sondern etwas anderes. Öffnen Sie die Datei mit einem guten code-editor und sehen, was drin ist.
InformationsquelleAutor Ehab AlBadawy | 2016-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie eine Datei öffnen, die nicht UTF-8 kodiert sind, während die Standard-Kodierung für Ihr system ist auf UTF-8 eingestellt.
Da Sie die Berechnung eines SHA1-hash, sollten Sie die Daten als binäre statt. Die
hashlib
- Funktionen müssen Sie pass in bytes:Beachten Sie die Zugabe von
b
im file-Modus.Sehen die
open()
- Dokumentation:und von der
hashlib
- Modul-Dokumentation:InformationsquelleAutor Martijn Pieters
Sie nicht angegeben haben, öffnen Sie die Datei im binary-Modus, so
f.read()
ist zu Lesen versucht, die Datei als UTF-8-kodierte text-Datei, die scheint nicht zu funktionieren. Aber da wir die hash bytes, nicht von strings, ist es egal, was die Codierung ist, oder sogar, ob die Datei text an alle: einfach öffnen, und dann Lesen Sie es, als eine binäre Datei.aber
b
gelöst.Nach so vielen tryouts war es so, dass
b
.InformationsquelleAutor DSM
Da gibt es nicht einen einzigen Hinweis in der Dokumentation, noch src-code, ich habe keine Ahnung, warum, aber mit der b-char (ich denke, für binäre) vollständig funktioniert (tf-version: 1.1.0):
Für mehr Informationen check out: gfile
InformationsquelleAutor 4F2E4A2E