使用php修复html文档上错误显示的编码

时间:2010-08-28 03:28:25

标签: php encoding phpquery

有没有办法通过phpquery :: newDocument运行这个html标记后修复显示不正确的字符?在使用phpquery创建新文档后,原始文档中的-Classics和现代Woman之间会出现双引号。

    //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 个答案:

答案 0 :(得分:25)

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

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

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

    在OP请求中,您可以在Windows上执行以下操作:

    1. 下载Notepad++。这是一个非常棒的文本编辑器,你应该使用它。
    2. 安装它。
    3. 在包含此代码的Notepad ++中打开PHP脚本。您正在进行所有编码的页面。是的,你的电脑上的那个文件。
    4. 在Notepad ++中,从顶​​部的编码菜单中选择“转换为无BOM的UTF-8”。
    5. 保存文件。
    6. 通过FTP或您使用的任何内容上传到您的网络服务器。
    7. 现在,运行该脚本。

答案 1 :(得分:3)

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

ob_start();

到第一行

ob_end_flush();

到最后它似乎正在工作

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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

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

我准备的每个输出都像utf8_decode()

BOM适用于MS-windows。