如何在Python邮件中解码UTF文件名?
我用这段代码来解压电子邮件文件,主要是解压MIME消息的部分。不过我遇到的问题是关于一些带有特殊字符的文件名,比如:
=?utf-8?B?2YbYs9iu2YcgINin2YTYrdin2YLZitmHINmC2LHYp9ix2K/Yp9ivINin2LM=?= =?utf-8?B?2KrYp9mG2K/Yp9ix2K8g2LPYp9iy2YogMTExMTEuZG9jeA==?=
程序在这里崩溃:
fp = open(os.path.join(directory, filename), 'wb')
因为
IOError: [Errno 2] No such file or directory
里面有一些不被接受的字符,我觉得问题可能出在这上面。这样的文件名没有任何东西像这个网站能解码的。
我面临的第一个问题是如何处理这个错误,第二个问题是如何解码文件名。
1 个回答
0
email.header.decode_header(header)
这个函数接受一个字符串作为输入,然后返回一个列表,列表里的每个元素都是一个元组,格式是 [(文本, 编码), ...]
。其中,如果某个部分没有经过编码,那么它的 编码
就会是 None
,这意味着它看起来是用 ascii
编码的。