Skip to main content
 首页 » 编程设计

python之使用 python 测试电子邮件字符集

2025年05月04日32sharpest

我想将电子邮件从 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 中的字符编码自动检测。与您的浏览器一样智能。开源。”