请教php扩展库tidy不支持中文怎么解决。

Rain208 2011-08-17 10:42:33

$buffer = "<html>
<head>
<title>test</title>
</head>
<body>
<div>
<p>indent: 代码缩进,可选auto,yes,no,在php中,填auto将会被默认为yes,所以,此项在php中可分别用2,1,0来表示,2表示auto,1表示yes,0表示no不开启。wrap:换行,用0表示不换行。output-xhtml:输出xhtml格式文档。
</p>
</div>
</div>
</body>
</html>";

$outstr = tidy_repair_string($buffer, array("input-encoding"=>"utf8","output-encoding"=>"utf8"), "utf8");

echo $outstr;



这个是代码, 但是浏览器显示出来得时乱码
是不是tidy本身不支持中文,还是我哪个地方写错了呀。

请教大家了。
...全文
204 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Rain208 2011-08-17
  • 打赏
  • 举报
回复
恩, 你这个也是对的。

本来我使用的是
$outstr = tidy_repair_string($buffer, array('input-encoding'=>'utf8','output-encoding"=>"utf8', 'char-encoding' => 'utf8'), "utf8");

不知道为什么显示的不对, 现在倒是可以的了,
可能是我没有注意把文件格式转换成UTF-8的
现在是可以的了。
第一次用这个东西,网上搜了一下,确实有价值的资料不是很多。
谢谢你了
乌镇程序员 2011-08-17
  • 打赏
  • 举报
回复
哦。。我脑子短路了。
把下面的代码保存为php文件,看看执行结果。(DTD、html代码全都去掉)

<?php
$buffer = "<html>
<head>
<title>test</title>
</head>
<body>
<div>
<p>indent: 代码缩进,可选auto,yes,no,在php中,填auto将会被默认为yes</p>
</div>
</div>
</body>
</html>";
$outstr = tidy_repair_string($buffer, array('output-xhtml' => true), 'utf8');
echo $outstr;
?>
Rain208 2011-08-17
  • 打赏
  • 举报
回复
等级不够,不能加分, 十分感谢
Rain208 2011-08-17
  • 打赏
  • 举报
回复


帅哥, 你太厉害了。 果然可以了。
十分感谢这么晚还在帮助我这样的新手,谢谢了。
乌镇程序员 2011-08-17
  • 打赏
  • 举报
回复
$outstr = tidy_repair_string($buffer, array('output-xhtml' => true), 'utf8'); //这样呢
Rain208 2011-08-17
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<?php
header("Content-Type: text/html; charset=utf8");
$buffer = "<html>
<head>
<title>test</title>
</head>
<body>
<div>
<p>indent: 代码缩进,可选auto,yes,no,在php中,填auto将会被默认为yes</p>
</div>
</div>
</body>
</html>";
$outstr = tidy_repair_string($buffer, array('char-encoding'=>'utf8'));
echo $outstr;
?>

</html>






这个是全部代码, 文件格式是UTF-8 无bom格式的。
结果还是乱码。 浏览器解释成utf8了。
不清楚为什么是乱码
Rain208 2011-08-17
  • 打赏
  • 举报
回复
我的php版本是5.2.17
开始的时候,没有装tidy, 这个是我刚刚安装上去的

如果没有中文, 显示结果正确,但是有中文后就不行了
不知道为什么
乌镇程序员 2011-08-17
  • 打赏
  • 举报
回复
补充,既然是指定utf8编码,那你的PHP文件是不是用utf8编码保存的?PHP文件head标签中有没有设置文档编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
Rain208 2011-08-17
  • 打赏
  • 举报
回复


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>test</title>
</head>
<body>
<div>
<p>indent:
´úÂëËõ½ø£¬¿ÉÑ¡auto,yes,no£¬ÔÚphpÖУ¬Ìîauto½«»á±»Ä¬ÈÏΪyes,ËùÒÔ£¬´ËÏîÔÚphpÖпɷֱðÓÃ2,1,0À´±íʾ£¬2±íʾauto,1±íʾyes,0±íʾno²»¿ªÆô¡£wrap:»»ÐУ¬ÓÃ0±íʾ²»»»ÐС£output-xhtml£ºÊä³öxhtml¸ñʽÎĵµ¡£</p>
</div>
</body>
</html>






这个是运行后的结果
还是不行
乌镇程序员 2011-08-17
  • 打赏
  • 举报
回复
$outstr = tidy_repair_string($buffer, array('char-encoding' => 'utf8')); //抱歉,上面漏掉个括号
乌镇程序员 2011-08-17
  • 打赏
  • 举报
回复
$outstr = tidy_repair_string($buffer, array('char-encoding' => 'utf8'); //这样呢?
Rain208 2011-08-17
  • 打赏
  • 举报
回复
相关推荐
发帖
基础编程

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
帖子事件
创建了帖子
2011-08-17 10:42
社区公告
暂无公告