【发布时间】:2018-06-07 01:57:07
【问题描述】:
我正在使用 Python 3 和 google-api-python-client 包从 Gmail 收件箱中读取电子邮件。
我正在使用 urlsafe_b64decode() 函数解码消息正文:
msg_body = base64.urlsafe_b64decode(payload_body['data'])
utf-8 或 ISO-8859-1 编码消息一切正常。但是,当消息使用更“复杂”的字符集(如 gb2312)时,size 字段中的值与以下返回的值不匹配:
len(msg_body)
使用gb2312 字符集编码的消息部分示例:
>>> payload_body['size']
147
>>> len(msg_body)
168
我错过了什么吗?
【问题讨论】:
-
您是否引用sizeEstimate 是消息的估计大小(以字节为单位)?是什么让您认为它们应该返回相同的结果?
-
@noogui 不,我指的是
size字段,它指示每个消息部分的确切大小:developers.google.com/gmail/api/v1/reference/users/messages/… -
什么是 len(payload_body['data'])?您似乎正在将 b64 编码与 b64 解码和/或有效负载字节与 Unicode 字符(这是 Python len() 函数计算在内)进行比较。
标签: python-3.x gmail-api