我有点过头了。有人可以帮我把这个哑巴吗??
我正在将我的代码从 Python 2.6 移植到 2.7,但由于 unicode 问题,我突然无法再检索我的电子邮件有效负载(它实际上是在提取相同的电子邮件,只是使用不同的 Py 版本。我阅读了 Unicode HOWTO 并迷路了。
以下在 Python 2.6 上运行时有效:
response = server.fetch(messages, ['RFC822'])
for msgid, data in response.iteritems():
msg_string = data['RFC822']
msg = email.message_from_string(msg_string)
body = msg.get_payload()
abody = str(body[1]) #converts the HTML instance to a string
但是当我在 2.7 下运行它时,我收到以下错误:
File "./foo.py", line 75, in main
msg = email.message_from_string(msg_string)
File "/usr/lib/python2.7/email/__init__.py", line 57, in message_from_string
return Parser(*args, **kws).parsestr(s)
File "/usr/lib/python2.7/email/parser.py", line 82, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 3041: ordinal not in range(128)
很明显,2.7 解释器不喜欢我正在阅读的电子邮件的某些部分。而且我怀疑我需要转换类型(或以某种方式与输出类型混淆),但我对真正的问题和解决方案感到迷茫.
我已经完成了 2 个小时,可以伸出援助之手。谢谢。