这是什么文本编码?
我用Python的imaplib从一个Gmail账户提取邮件...但是我收到了一封邮件,里面的内容让我很困惑:
> RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
> OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
谁能帮我从我的邮件中读取这个文件...
谢谢
lo
3 个回答
1
这是Base-64编码的UTF-8文本。这段特定的文字是:
Date et heure: 22/08/2010 14:33:03 GMT Unknown
Prénom: jacinto
Nom: carvalho
E-Mail:
1
马克说得基本正确,但“Prénom”中的\uc3a9
说明它也是用UTF-8编码的。
(我正在想为什么我能正确解码,而马克却不能,这个问题就另说了。)
14
看起来这是个base64编码。在Python中,你可以使用base64.b64decode
或者str.decode('base64')
来解码。
message = '''
RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
'''
print message.decode('base64')
结果:
Date et heure: 22/08/2010 14:33:03 GMT Unknown Prénom: jacinto Nom: carvalho E-Mail:
这里的é
看起来不太对。可能是因为这个文本是用UTF-8编码的,所以你还需要解码UTF-8编码:
print message.decode('base64').decode('utf-8')
结果:
... Prénom: ...
还有一点需要注意的是,Base64编码有不同的变种,它们在表示62和63这两个值时使用的符号不同。如果默认的解码方法不适合你,可以使用base64.b64decode
来指定这两个字符。