我写了一些Python代码来从Gmail服务器获取电子邮件。代码如下:self.M = imaplib.IMAP4_SSL(self.IMAP_SERVER, self.IMAP_PORT)
data = self.M.fetch(id,"(RFC822)")
if data[0] == 'OK':
msg = email.message_from_string(data[1][0][1])
else:
print 'Error!'
mail_subject = email.Header.decode_header(msg['subject'])[0][0]
print email.Header.decode_header(msg['subject'])
print '~~~separator~~~'
print mail_subject
英文邮件主题显示正确:
^{pr2}$
但在中文之后:[('\xd5\xe2\xca\xc7\xd6\xd0\xce\xc4\xb2\xe2\xca\xd4\xa3\xa1', 'gb2312')]
~~~separator~~~
╒Γ╩╟╓╨╬─▓Γ╩╘úí
函数isinstance()显示字符类型为“str”,
所以我试着解决这个问题:print unicode(mail_subject, 'gb2312')
并发生错误:File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-6:
character maps to
我也试着直接解码这个角色:print mail_subject.decode("gb2312")
我又犯了同样的错误!在
那么,如何解决这个问题呢?在
非常感谢!:)