教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP DOMDocument保存xml时中文出现乱码

PHP DOMDocument保存xml时中文出现乱码

发布时间:2016-10-10   编辑:jiaochengji.com
教程集为您提供PHP DOMDocument保存xml时中文出现乱码等资源,欢迎您收藏本站,我们将为您提供最新的PHP DOMDocument保存xml时中文出现乱码资源
php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧.

PHP的DOM内部是utf8机制的。在loadHTML时,是通过检查字符中meta的charset来设置编码的。如果没有charset,就当iso8859进行处理了。而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了。

这么说是不是还不太理解,举个例子:

$xml = new DOMDocument();
@$xml->loadHTML('<div>我就是测试看看 - http://www.jiaochengji.com</div>');
 
$dom = new DOMXPath($xml);
echo $dom->query('//div')->item(0)->saveXML();

打开网页执行,你会发现输出乱码了。那如何解决这个问题呢?有两种方式。

第一种:在loadHTML的时候指定编码,下面这段代码引用自php.net官方文档中的回复

$doc = new DOMDocument();
$doc->loadHTML('<?xml encoding="UTF-8">' . $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) );

您可能感兴趣的文章:
PHP DOMDocument保存xml时中文出现乱码
实例学习PHP操作XML的类DOMDocument
php操作xml的实例代码
php生成xml简单实例详解
PHP读取XML值的代码
php操作xml的各种方法解析
【PHP】xml学习笔记之增删改查(一)增加
php DOMElement操作xml文档的例子
php解析XML文档属性并编辑的代码
php读写xml文件的方法介绍

[关闭]
~ ~