一些日文字符无法正确显示

时间:2013-10-01 20:22:49

标签: php email utf-8 email-headers

我遇到问题,我试图解析电子邮件,然后将电子邮件内容发布到网站。电子邮件可能包含日语或英语。日语在网站上正确显示99%,但偶尔会有一个字符换成另一个字符,否则它将显示为垃圾。

这里是用于获取电子邮件正文的正确编码的代码 -

$post->content = quoted_printable_decode($parser->getMessageBody('text'));

$isISO2022 = $parser->isISO2022();

$post->content = ($isISO2022)
             ? mb_convert_encoding($post->content, 'UTF-8', 'iso-2022-jp')
             : mb_convert_encoding($post->content, 'UTF-8', mb_detect_encoding($post->content));

$post->save();

解析器的功能是ISO2020:

public function isISO2022() {
        $isISO2022 = false;

        foreach ($this->parts as $part) {
            if (isset($part['headers']['content-type']) && preg_match('/iso-2022-jp/i',$part['headers']['content-type'])) {
                $isISO2022 = true;
            }
        }

        return $isISO2022;
    }

任何人都有什么想法会发生什么?

添加了: 我听说iso-2022-jp不支持某些特定的字符,你应该使用iso-2022-jp-ms,但是当我尝试使用iso-2022-jp-ms时,它表示无效编码。在我看来,我看到它没有正确显示的字符是基本字符,应该得到普遍支持。

0 个答案:

没有答案