首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用bytes.decode解码电子邮件文本(编码)

用bytes.decode解码电子邮件文本(编码)
EN

Stack Overflow用户
提问于 2018-08-22 03:22:17
回答 1查看 1.4K关注 0票数 0

我试图用Python3的bytes.decode(encoding)解码一些电子邮件文本,其中encoding来自电子邮件头的charset字段。

问题:一些电子邮件将'cp-850‘作为他们的字符集,而decode()则接受’cp 850‘。

如果我简单地去掉连字符,那么另一个代码集(如iso-8859-6 )将变成iso88596,这是一种无法识别的编码。

如何在不创建更多未知编码的情况下净化arg encoding

编辑后续问题:如何从email.message.Message对象获得bytes.decode()接受的格式(别名)的字符集

编辑澄清了问题。以前,当我指字符集时,使用了一个不正确的术语“内容编码”。

EN

Stack Overflow用户

回答已采纳

发布于 2018-08-22 03:39:31

您可以删除连字符并检查是否存在支持结果编码的编解码器:

代码语言:javascript
复制
import codecs

def sanitize_encoding(enc):
    try:
        codecs.lookup(enc)
        return enc
    except LookupError:
        try:
            enc = enc.replace('-','')
            codecs.lookup(enc)
            return enc
        except LookupError:
            # Not a thing, either way
            return None

sanitize_encoding('cp-850')
#'cp850'
sanitize_encoding('iso-8859-6')
#'iso-8859-6'
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51959430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档