我在使用gmailapi阅读电子邮件时遇到了一些编码问题。 首先,我使用以下方法检索电子邮件:
message = service.users().messages().get(userId='me', id='169481bce75af185', format='raw').execute()
之后,我使用这些行从中提取字符串并将其转换为mime消息:
msg_str = str(base64.urlsafe_b64decode(message['raw'].encode('utf-8')).decode('utf-8'))
mime_msg = email.message_from_string(msg_str)
然后我把我得到的打印出来:
print(mime_msg.get_payload()[0])
但是我可以在输出中看到一些奇怪的字符,例如:
Gesch=C3=A4ftsf=C3=BChrer
在消息头中,我可以看到:
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
我做错了什么?如何在没有奇怪字符的情况下获得正确的输出?你知道吗
谢谢你抽出时间
您的数据已被编码为UTF-8,然后通过进一步编码(引用为printable)来确保7位传输的安全。这就是消息头告诉你的。使用
quopri
撤消引用的可打印文件,然后使用.decode
获取Unicode:正如BoarGules所建议的,它现在可以正确地显示字符。浏览这个网站也让我找到了这个有用的功能:
它将消息字符串转换为解码字符串并正确显示字符。你知道吗
相关问题 更多 >
编程相关推荐