gpt4 book ai didi

python - ISO 8859-1 文件名未解码

转载 作者:太空狗 更新时间:2023-10-30 02:13:03 31 4
gpt4 key购买 nike

我在 python milter 中从 MIME 消息中提取文件,并且遇到了这样命名的文件的问题:

=?ISO-8859-1?Q?Certificado=5FZonificaci=F3n=5F2010=2Epdf?=

我似乎无法将此名称解码为 UTF。为了解决之前的 ISO-8859-1 问题,我开始将所有文件名传递给此函数:

def unicodeConvert(self, fname):
normalized = False

while normalized == False:
try:
fname = unicodedata.normalize('NFKD', unicode(fname, 'utf-8')).encode('ascii', 'ignore')
normalized = True
except UnicodeDecodeError:
fname = fname.decode('iso-8859-1')#.encode('utf-8')
normalized = True
except UnicodeError:
fname = unicode(fname.content.strip(codecs.BOM_UTF8), 'utf-8')
normalized = True
except TypeError:
fname = fname.encode('utf-8')

return fname

在我得到这个文件名之前一直有效。

想法一如既往地受到赞赏。

最佳答案

您的字符串使用 Quoted-printable 编码MIME header 的格式。 email.header module为您处理:

>>> from email.header import decode_header
>>> try:
... string_type = unicode # Python 2
... except NameError:
... string_type = str # Python 3
...
>>> for part in decode_header('=?ISO-8859-1?Q?Certificado=5FZonificaci=F3n=5F2010=2Epdf?='):
... decoded = string_type(*part)
... print(decoded)
...
Certificado_Zonificación_2010.pdf

关于python - ISO 8859-1 文件名未解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649601/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com