1

我正在处理来自 UTF8 数据库的 UTF8 数据,但遇到了 UTF8 编码问题。

  1. 从数据库中正确提取原始内容,我在我的 UTF8 终端中看到“é”:

    Site de la Préfecture de Police
  2. 然后,当我通过使用 DOM 操作的 PHP 函数传递此内容时,我看到:

    Site de la Préfecture de Police
  3. 我们可以看到 DOM 读取的是 `é` 而不是 `é` 并用 HTML 实体替换了 `é` é

  4. 之后,我再次通过 DOM 函数,得到另一个奇怪的转换:

    Site de la Préfecture de Police

现在它看起来像十六进制编码é%C3 %A9

你知道发生了什么吗?

4

2 回答 2

4

好的,找到了!

涉及问题的两个 PHP 函数:

  • html_entity_decode在 ISO-8859-1 中工作
  • $dom->loadHTML($xml)在ASCII中工作

我通过设置所需的字符集来修复:

  • html_entity_decode( $newContent, ENT_NOQUOTES, 'UTF-8' );
  • $dom->loadHTML('<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>' . $xml . '</body></html>');
于 2013-06-13T12:28:09.010 回答
3

尝试 charset: iso-8859-1 而不是 UTF-8 或确保在 html 标头中设置字符集:

PHP : header('Content-type: text/html; charset=utf-8');
HTML: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
于 2013-06-12T16:00:38.577 回答