2016-09-27 5 views
0

Ich habe eine Wort-codierte Zeichenfolge aus empfangenen Mail. Beim Parsen codiertes Wort in Python3, bekam ich eine AusnahmePython: Gb2312-Codec kann Bytes nicht decodieren

'gb2312' Codec Bytes in Position nicht 18-19 dekodieren kann: illegal multibyte

Sequenz

angehoben von make_header Methode.

from email.header import decode_header, make_header 

hdr = decode_header("""=?gb2312?B?QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg?=""") 
make_header(hdr) 

Parsing codierte Zeichenfolge in Online-Tools funktioniert ohne Probleme (http://dogmamix.com/MimeHeadersDecoder/). Irgendwelche Vorschläge, was ich falsch mache? Danke

Antwort

1

Die Fehlermeldung sagt Ihnen, dass die Bytes in Position 18-19 sind nicht gültig für diese Codierung.

decode_header extrahiert einfach eine Reihe von Bytes und eine Codierung. make_header versucht tatsächlich, diese Bytes in dieser Codierung zu interpretieren, und schlägt fehl, da diese Bytes in dieser Codierung nicht gültig sind.

Ähnlich

bash$ base64 -D <<<'QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg' | 
> iconv -f gb2312 -t utf-8 
A V 网 盘 出 售 
iconv: (stdin):1:18: cannot convert 

So wird die Fehlermeldung sagt man einfach, dass diese Daten nicht gültig ist. Wir können nicht ohne weitere Informationen sagen, was die Daten sein sollen, und Python oder Ihr Programm kann dies auch nicht tun.

Für eine grobe Parabel, können Sie g ?? ss, welche b? T? S sind m? Ss hier, aber nicht in? H ?? l? ng ?? s ??? e ???.

+0

Vielleicht ist das codierte Wort wirklich Quatsch. Ich wurde von diesem Online-Tool verwirrt, das diese Zeichenfolge (vielleicht) korrekt angezeigt hat. Auch ich habe das gleiche Ergebnis von Outlook bekommen. –

+0

Sieht so aus, als ob das Werkzeug, mit dem Sie verbunden sind, es zuverlässig in einen nicht darstellbaren Charakter decodiert. Es wäre schön, wenn es einen Fehler oder ein "unbekanntes Zeichen" Glyph anzeigen würde, aber es implementiert einfach "Müll in, Müll raus". – tripleee

Verwandte Themen