如何解码收到的电子邮件的主题行的UTF8字符集


how to decode UTF8 charset of a subject line of a received email

在PHP中处理IMAP电子邮件头时,我遇到了一个与主题行编码有关的问题。当我尝试mb_decode_mimeheader(根据重复问题(时,我没有得到想要的结果:

$subject = "=?UTF-8?Q?=e2=99=a3?= Your winning day =?UTF-8?Q?=e2=99=a3?=";
echo mb_decode_mimeheader($subject);

输出:

? Your winning day ?

要修复注释中的示例:

mb_internal_encoding('UTF-8');
$subject = "=?UTF-8?Q?=e2=99=a3?= Your winning day =?UTF-8?Q?=e2=99=a3?=";
echo mb_decode_mimeheader($subject);

输出"♣您的获胜日♣".

mb_internal_encoding影响mb_decode_mimeheader的操作,这是没有记录的,但确实如此。CCD_ 4作为应该从CCD_ 5返回的目标字符集。如果设置为Latin-1,则字符为"♣"无法解码为此目标字符集,将失败。

您可能希望查看imap_utf8,了解一个不那么挑剔的函数。