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

时间:2014-05-01 14:54:43

标签: php

在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 ?

1 个答案:

答案 0 :(得分:9)

修复评论中的示例:

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的操作没有记录,但确实如此。 mb_internal_encoding被视为应从mb_decode_mimeheader返回的目标字符集。如果将其设置为Latin-1,那么像“♣”这样的字符将无法解码到此目标字符集中并且将失败。

您可能需要查看imap_utf8以获得不那么挑剔的功能。