如何解码电子邮件主题

时间:2017-05-11 08:59:26

标签: c email glibc libiconv

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

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

我的猜测是base64解码应该包含转义字符 - SO,SI,ESC $)C - 。但是,不包括解码。 我怎样才能获得正常的字符串?

我希望结果如下。

Subject: like this, 안녕하세요.

请给我一个如何在代码级别回复的提示。 in C

更新

对不起。我有 SO,SI ,但我错过了。但是没有 ESC $)C ,问题立即解决并与其他人共享。

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

感谢。

1 个答案:

答案 0 :(得分: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_openiconv和iconv_close。