PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
程序员文章站
2024-02-29 10:21:10
php中domdocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧.
php的dom内部是...
php中domdocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧.
php的dom内部是utf8机制的,在loadhtml时,是通过检查字符中meta的charset来设置编码的,如果没有charset,就当iso8859进行处理了,而这种情况下进行savexml时,输出来的却是utf8,所以就看到乱码了.
这么说是不是还不太理解,举个例子:
$xml = new domdocument(); @$xml->loadhtml('<div>我就是测试看看</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); 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 中 DOMDocument保存xml时中文出现乱码问题的解决方案
-
php中截取中文字符会出现乱码的问题
-
php中,js验证注册条件,显示提示信息时的中文乱码有关问题
-
PHP DOMDocument保存xml时中文出现乱码
-
解析使用substr截取UTF-8中文字符串出现乱码的问题_PHP
-
PHP substr截取字符串时,中文出现乱码的问题解决
-
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
-
解决python中画图时x,y轴名称出现中文乱码的问题
-
解决python中画图时x,y轴名称出现中文乱码的问题
-
解析使用substr截取UTF-8中文字符串出现乱码的问题_PHP