我收到了来自收到邮件的字符编码字符串。在Python3中解析编码的单词时,我得到了一个异常
' GB2312'编解码器不能解码位置18-19中的字节:非法多字节 序列
从 make_header 方法中提升。
from email.header import decode_header, make_header
hdr = decode_header("""=?gb2312?B?QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg?=""")
make_header(hdr)
解析在线工具中的编码字符串可以正常工作(http://dogmamix.com/MimeHeadersDecoder/)。 有什么建议我做错了吗?感谢
答案 0 :(得分:1)
错误消息告诉您位置18-19 中的字节对此编码无效。
decode_header
只是提取一堆字节和一个编码。 make_header
实际上尝试解释该编码中的那些字节,并且失败,因为这些字节在该编码中无效。
类似地,
bash$ base64 -D <<<'QSBWIM34IMXMILP2IMrbICAgqEMgs8kgyMsg' |
> iconv -f gb2312 -t utf-8
A V 网 盘 出 售
iconv: (stdin):1:18: cannot convert
因此错误消息只是告诉您此数据无效。我们无法在没有更多信息的情况下告诉数据应该是什么,Python或您的程序也不能这样做。
对于一个粗略的比喻,你可以在这里看到哪些是m?s?但不是? L·纳克? Sαδ+ê???。