阻止PHP';s的DOMDocument无法更改字符编码


prevent PHP's DOMDocument from changing character encoding

如何防止DOMDocument更改字符编码?请参阅以下内容,并注意是如何更改为â的。

<?php
    $message = "<p>Hello “something in quotes” goodby</p>";
    echo("pre message: $message'n");
    $doc = new DOMDocument();
    $doc->loadHTML($message);
    $body = $doc->getElementsByTagName('body')->item(0);
    $message=$doc->saveHTML($body);
    echo("Modified message: $message'n");

输出:

pre message: <p>Hello “something in quotes” goodby</p>
Modified message: <body><p>Hello âsomething in quotesâ goodby</p></body>

我遇到过类似的问题,并使用iconv和强制编码解决了这些问题。

$new_string = iconv("UTF-8", "UTF-8//TRANSLIT",$old_string);

这是上面的php手册页。

经过进一步调查,这似乎是DOM:Document中的一个错误。

https://bugs.php.net/bug.php?id=32547