我想将电子邮件从 mbox 格式导入 Django 应用程序。所有数据库表都是 Unicode。我的问题:有时给出了错误的字符集,有时根本没有。处理这些编码问题的最佳方法是什么?
到目前为止,我只是嵌套异常来尝试我接收邮件时使用的两种最常见的字符集(utf-8 和 iso-8859-1):
if (not message.is_multipart()):
message_charset = message.get_content_charset()
msg.message = message_charset + unicode(message.get_payload(decode=False), message_charset)
else:
for part in message.walk():
if part.get_content_type() == "text/plain":
message_charset = part.get_content_charset()
try:
msg.message = message_charset + unicode(part.get_payload(decode=False), message_charset)
except(UnicodeDecodeError):
try:
msg.message = message_charset + unicode(part.get_payload(decode=False), "utf-8")
except(UnicodeDecodeError):
msg.message = message_charset + unicode(part.get_payload(decode=False), "iso-8859-1")
有没有更好、更稳健的方法?
谢谢!
请您参考如下方法:
你可以问优秀的chardet猜测编码的库。
“Python 2 和 3 中的字符编码自动检测。与您的浏览器一样智能。开源。”
