9

有没有办法修复通过 phpquery::newDocument 运行此 html 标记后显示不正确的字符?原始文档中的 -Classics with modern Woman- 周围有预定的双引号,在使用 phpquery 创建新文档后最终显示不正确。

    //Original document is UTF-8 encoded
$raw_html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><p>Mr. Smith of Bangkok celebrated the “Classics with modern Woman”.</p></body></html>';
print($raw_html);

$aNew_document = phpQuery::newDocument($raw_html);
print($aNew_document);

原始输出:曼谷的史密斯先生庆祝“经典与现代女性”。

新文件输出:曼谷的史密斯先生与现代女性一起庆祝“经典”。

4

4 回答 4

26
  1. 您需要使用UTF-8 without BOM编码保存页面。
  2. 在脚本顶部添加此标头:

    header("Content-Type: text/html; charset=UTF-8");

[编辑]:如何在没有 BOM 的情况下将文件另存为 UTF-8:

根据 OP 要求,您可以在 Windows 上执行以下操作:

  1. 下载记事本++。这是一个很棒的文本编辑器,您应该使用它。
  2. 安装它。
  3. 在包含此代码的 Notepad++ 中打开 PHP 脚本。您正在执行所有编码的页面。是的,您计算机上的那个文件。
  4. 在 Notepad++ 中,从顶部的“编码”菜单中,选择“转换为不带 BOM 的 UTF-8”。
  5. 保存文件。
  6. 通过 FTP 或您使用的任何方式上传到您的网络服务器。
  7. 现在,运行该脚本。
于 2010-08-28T03:32:33.227 回答
3

我有同样的问题,但是当我添加

ob_start();

到第一行

ob_end_flush();

到最后它似乎正在工作

于 2013-03-01T07:51:38.753 回答
1

你在<head>元素中有这个:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 

下一个课程是使用 HTML 实体来显示这些字符。

于 2010-08-28T03:32:02.283 回答
1

我在使用 phpQuery 类时遇到了同样的问题。问题是如上所述,在最高投票的答案中 - 脚本文件保存为带有 BOM 的 UTF8。

因为我没有机会在 mac osX 上获得 notepad++,

我这样准备的每个输出utf8_decode()

BOM 适用于 MS-windows。

于 2015-01-13T17:12:25.437 回答