我在尝试解析电子邮件,然后将电子邮件内容发布到网站时遇到问题。电子邮件可能包含日语或英语。日文在网站上显示正确率为 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();
解析器的 isISO2022 函数:
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时,说无效编码。在我看来,我看到它无法正确显示的字符也是基本字符,应该得到普遍支持。