DOMdocument::loadHTML除非另行说明,否则会将您的字符串视为ISO-8859-1中的字符串。这导致UTF-8字符串被错误地解释。
如果您的字符串不包含XML编码声明,则可以在前面加上一个,以使该字符串被视为UTF-8:
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';$dom = new DOMdocument();$dom->loadHTML('<?xml encoding="utf-8" ?>' . $profile);echo $dom->saveHTML();如果您不知道该字符串是否已经包含这样的声明,则SmartDOMdocument中提供了一种变通方法,它可以帮助您:
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>';$dom = new DOMdocument();$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));echo $dom->saveHTML();
这不是一个很好的解决方法,但是由于并非所有字符都可以用ISO-8859-1表示(就像这些武士刀一样),所以这是最安全的选择。



