+ -
当前位置:首页 → 问答吧 → 用php 的DOM对象的loadhtml 方法处理中文网页,得到的是乱码

用php 的DOM对象的loadhtml 方法处理中文网页,得到的是乱码

时间:2008-04-19

来源:互联网

用php 的DOM对象的loadhtml 方法处理中文网页,得到的是乱码,谁能替我解决这个问题?

具体来说,我知道loadhtml 方法用的是utf-8编码形式,但无论是使用这个函数前用bm_convert_encoding处理,还是之后处理,输出的均是乱码,问题无法解决。

另外,若将浏览器的编码改成utf-8确能正确显示中文。这说明loadhtml 确实以utf-8处理中文内容,而我把处理后的内容用bm_convert_encoding($html,'utf-8','gb2312')处理,浏览器用gb2312显示却不成功,说明并没有转化成功,这是为什么?

作者: suprun   发布时间: 2008-04-19

string iconv ( string in_charset, string out_charset, string str )

作者: beeqee   发布时间: 2008-04-20

<?php

$myhtml=file("http://www.baidu.com");
$myhtml=join('',$myhtml);

$doc = new DOMDocument();
@$doc->loadHTML($myhtml);

$tags = $doc->getElementsByTagName('a');

foreach ($tags as $tag) 
{

  $html.='<a href='.$tag->getAttribute('href').'>'.$tag->childNodes->item(0)->nodeValue.'</a><br>';
}

echo $doc->encoding; //输出 gb2312 ,浏览器却显示乱码!(用gb2312编码的) 改成utf-8编码时显示正常。
?>

作者: suprun   发布时间: 2008-04-20

一楼的方法不行,bm_convert_encoding 也不行啊。php/manual 上也没说什么有用的东西好像,倒是有人说是bug。有高手能搞定它啊?

作者: suprun   发布时间: 2008-04-20

不知,帮顶

作者: meiZiNick   发布时间: 2008-05-01

关注 接分

作者: knowledge_Is_Life   发布时间: 2008-05-01

将网页的编码改为 gb2312就OK了!!

作者: gaoming13   发布时间: 2011-10-16

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

作者: gaoming13   发布时间: 2011-10-16

相关阅读 更多