PHP的DOM内部是utf8机制的。在loadHTML时,是通过检查字符中meta的charset来设置编码的。如果没有charset,就当iso8859进行处理了。而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了。
这么说是不是还不太理解,举个例子:
$xml = new DOMDocument();
@$xml->loadHTML('
打开网页执行,你会发现输出乱码了。那如何解决这个问题呢?有两种方式。
第一种:在loadHTML的时候指定编码,下面这段代码引用自php.net官方文档中的回复
$doc = new DOMDocument();
$doc->loadHTML('' . $html);
// dirty fix
foreach ($doc->childNodes as $item)
if ($item->nodeType == XML_PI_NODE)
$doc->removeChild($item); // remove hack
$doc->encoding = 'UTF-8'; // insert proper
第二种方法,通过iconv对输出的字符重新转换,代码如下:
echo iconv("UTF-8", "GB18030//TRANSLIT", $dom->saveXML($n) );
打造世界正式版免费版
打造世界手机版是一款非常好玩的模拟类手游,在这款游戏中,你可
奇妙汉堡店手游
奇妙汉堡店手游是一个全新的餐厅模拟经营类型的休闲小游戏,整个
辐射避难所online官方版
辐射避难所online手游,非常好玩的模拟闯关手游,一场恐怖
旅行青蛙中国之旅最新版
旅行青蛙中国之旅是一款非常有意思的养成手游,采用独特的游戏画
飞机大厨最新版2024(airplane chefs)
飞机厨师中文版是一个趣味好玩的航空美食经营类小游戏。在飞行的