UTF-8主题行在Gmail中显示为问号

时间:2010-07-13 23:38:23

标签: email character-encoding gmail-imap email-headers

我正在尝试从我的程序向gmail帐户发送主题行中包含中文字符的电子邮件,但主题行显示为????。这就是主题行的编码方式:

=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=

编码有什么问题吗?有什么我必须记住的吗?邮件中还包含正文中的中文字符,但这些字符显示得很好。我使用base64来编码正文。

2 个答案:

答案 0 :(得分:2)

对于对此问题的答案感兴趣的人,此字符串是按RFC2047编码的MIME标头。 =?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=表示它使用UTF-8字符集,B表示Base 64编码。

在PHP中,使用iconv_mime_decode

答案 1 :(得分:2)

=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=由base64编码,字符串缓冲区(由base64解码后)由utf-8编码。

您可以在python中解码它:

>>> from base64 import b64decode
>>> b64decode(b'Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=').decode('utf-8')
'FW: 請幫我給 與你起來的同事'

同样在python中:

>>> from email.header import decode_header
>>> decode_header('=?utf-8?B?Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos=?=')
[(b'FW: \xe8\xab\x8b\xe5\xb9\xab\xe6\x88\x91\xe7\xb5\xa6 \xe8\x88\x87\xe4\xbd\xa0\xe8\xb5\xb7\xe4\xbe\x86\xe7\x9a\x84\xe5\x90\x8c\xe4\xba\x8b', 'utf-8')]
>>> _[0][0].decode(_[0][1])
'FW: 請幫我給 與你起來的同事'

或者在bash中(也许你应该输入iconv):

~ $ echo Rlc6IOiri+W5q+aIkee1piDoiIfkvaDotbfkvobnmoTlkIzkuos= | base64 -d
FW: 請幫我給 與你起來的同事