PHP DOMDocument loadHTML无法正确编码UTF-8

263

我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我的编码突然丢失了(至少在我看来是这样的)。

$profile = "<div><p>various japanese characters</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile); 

$divs = $dom->getElementsByTagName('div');

foreach ($divs as $div) {
    echo $dom->saveHTML($div);
}

这段代码的结果是我得到了一堆不是日语的字符。然而,如果我这样做:

echo $profile;

它能正确地显示。 我尝试过saveHTML和saveXML,但都无法正确显示。 我正在使用PHP 5.3。

我看到的:

ã¤ãªãã¤å·ã·ã«ã´ã«ã¦ãã¢ã¤ã«ã©ã³ãç³»ã®å®¶åº­ã«ã9人åå¼ã®5çªç®ã¨ãã¦çã¾ãããå½¼ãå«ãã¦4人ã俳åªã«ãªã£ããç¶è¦ªã¯æ¨æã®ã»ã¼ã«ã¹ãã³ã§ãæ¯è¦ªã¯éµä¾¿å±ã®å®¢å®¤ä¿ã ã£ããé«æ ¡æ代ã¯ã­ã£ãã£ã®ã¢ã«ãã¤ãã«å¤ãã¿ãæè²è³éãåããªããã«ããªãã¯ç³»ã®é«æ ¡ã¸é²å­¦ã

需要展示什么内容:

イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として生まれる。彼を含めて4人が俳優になった。父親は木材のセールスマンで、母親は郵便局の客室係だった。高校時代はキャディのアルバイトに勤しみ、教育資金を受けながらカトリック系の高校へ進学

编辑:我已将代码简化为五行以便您进行测试。

$profile = "<div lang=ja><p>イリノイ州シカゴにて、アイルランド系の家庭に、</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile);
echo $dom->saveHTML();
echo $profile;

这是返回的HTML代码:

<div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åº­ã«ã€</p></div>
<div lang="ja"><p>イリノイ州シカゴにて、アイルランド系の家庭に、</p></div>

这可能会对你有所帮助。http://stackoverflow.com/questions/1580543/php-japanese-strings-getting-set-to - frustratedtech
1
谢谢。我检查了所有这些,但没有帮助。我不会得到????,但是会出现其他奇怪的文本。我会尝试将其粘贴在这里,但不知道网站会如何显示它。 - Slightly A.
尝试使用 utf8_encode - Ben
尝试过了,但没有成功。返回的字符与之前相同。 - Slightly A.
11个回答

-1
问题在于当你给DOMDocument::saveHTML()函数添加参数时,会丢失编码。在某些情况下,你需要避免使用该参数,并使用旧的字符串函数来查找你要查找的内容。
我认为之前的答案对你有用,但由于这种解决方法对我不起作用,我正在添加这个答案以帮助可能处于我的情况下的人们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接