2017-05-11 171 views
0

解析邮件标题中的主题时出现问题。例如,主题的形式如下。如何解码电子邮件主题

subject: =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?= 

我的猜测是,BASE64解码应包括转义字符 - S0,S1,ESC $)C - 。但是,解码不包括在内。 我怎样才能得到一个正常的字符串?

我希望结果如下。

Subject: like this, 안녕하세요. 

请给我一个提示如何在代码级别做出响应。 用C

更新

遗憾。我有一个SO,SI,但我错过了它。但没有ESC $)C,该问题立即解决并为其他人共享。

在没有ESC $的)C,所述libiconv的是一个问题,但gconv(glibc中)不是一个问题。我使用的是libiconv。更改为gconv已解决该问题。

谢谢。

+0

形式为:'=?charset?encoding?编码的文本?=。'编码既可以是'Q',也可以是表示类似于quoted-printable编码的Q编码,或者'B'表示base64编码。 –

+0

要获得更多建议,最好提供迄今为止已有的代码和输出。 –

+0

谢谢,但大部分有关转换的部分是已知的。我只是想知道它如何处理** iso-200-KR **。 –

回答

1

所以在=?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?=夹着问号的B意味着base64编码。 iso-2022-KR是字符集。 DjlMOC4PIA....gyDzogT是base64编码的标题。

你先base64解码标题。很容易找到a solution for this in C

这将为您留下一个二进制字节数组,这是ISO-2022-KR字符集中编码的标题。大概你想把它转换成UTF-8或者你的电脑可以处理的其他字符集。这部分最好的选择是使用字符集转换实用程序。如果您在Linux或MacOS上,则可以使用iconv库。见iconv_open,iconv和iconv_close。

+0

谢谢。我已经完成base64解码并通过iconv转换它。但是,base64解码的结果与英文输出相同,而不是韩文,即使在转换为字符集时也是如此。在邮件正文中,需要包含特殊字符来转换iso-2022-kr ** - SO,SI,ESC $)C - **。但是,base64解码结果不包含这些字符,是否相关? **主题**与**邮件主体**在转换方式上有所不同吗? –