【发布时间】:2011-01-15 06:22:22
【问题描述】:
$string = file_get_contents('http://example.com');
if ('UTF-8' === mb_detect_encoding($string)) {
$dom = new DOMDocument();
// hack to preserve UTF-8 characters
$dom->loadHTML('<?xml encoding="UTF-8">' . $string);
$dom->preserveWhiteSpace = false;
$dom->encoding = 'UTF-8';
$body = $dom->getElementsByTagName('body');
echo htmlspecialchars($body->item(0)->nodeValue);
}
这会将所有 UTF-8 字符更改为 Å、¾、¤ 和其他垃圾。有没有其他方法可以保存 UTF-8 字符?
不要发布答案告诉我确保我将其输出为 UTF-8,我确定我是。
提前致谢:)
【问题讨论】:
-
数据(
$string)从何而来? -
我已经更新了我的问题:)
-
您能否提供一个指向您使用 file_get_contents() 获取的 URL 的链接?正如我在另一个问题中所说,我怀疑您正在获取 ISO-8859-1 或其他一些数据,当以 UTF-8 输出时,这些数据 必须 出现乱码。我不会依赖 mb_detect_encoding()。
-
好吧,我相信 :) 这真的很奇怪。但是,
htmlspecialchars()的默认编码是iso-8859-1。你能把它改成UTF吗?它不应该改变任何东西,只是为了确定。 de3.php.net/htmlspecialchars