PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案

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时中文出现乱码问题的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-14 09:40:19

PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案的相关文章

PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案_php实例

php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧. PHP的DOM内部是utf8机制的,在loadHTML时,是通过检查字符中meta的charset来设置编码的,如果没有charset,就当iso8859进行处理了,而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了. 这么说是不是还不太理解,举个例子: $xml = new DOMDocument(); @$xml->loa

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

PHP的DOM内部是utf8机制的.在loadHTML时,是通过检查字符中meta的charset来设置编码的.如果没有charset,就当iso8859进行处理了.而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了. 这么说是不是还不太理解,举个例子: $xml = new DOMDocument(); @$xml->loadHTML('<div>我就是测试看看 - http://www.111cn.net</div>');   $dom = new

CAS登陆验证后查询用户基本信息时中文出现乱码,导致deployerConfigContext.xml报错

问题描述 CAS登陆验证后查询用户基本信息时中文出现乱码,导致deployerConfigContext.xml报错是在验证用户名密码正确后查询用户基本信息时,用户真实姓名是中文查询出来是乱码报错:严重:org.xml.sax.SAXParseException:Theelementtype"cas:userRealName"mustbeterminatedbythematchingend-tag"</cas:userRealName>".org.xml

通过freemarker生成一个word,解决生成的word用wps打开有问题的问题,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件(要注意的是生成xml格式要是2003格式的xml,也就是说拿到的word模板得是2003格式的,否则用wps打开word将会出现问题)   详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(si

jsp到 url时中文出现乱码

jsp教程到a url时中文出现乱码 先在jsp编码,再在action中解码 encodeURI(encodeURI("中文"))编码 URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码. 例如:  url:"qtypenums.action?typeid=<s:property value='typeid'  escape='false'/>&qm

中文乱码-pb9创建菜单时中文名字乱码

问题描述 pb9创建菜单时中文名字乱码 在PowerBuilder9上创建menu时出现中文名字的乱码现象

ext中form提交的数据中文数据乱码

问题描述 ext中form提交的数据中文数据乱码.我有一个程序,如果是添加信息中含有中文就不会乱码,如果是修改信息中含有中文就是乱码.这是怎么回事 解决方案 解决方案二:前台页面用utf-8,后台弄个过滤器也用utf-8就不会有问题了

解决AJAX中POST或GET传递中文字符乱码

ajax中文乱码有很多原因那么如何解决这个乱码问题呢? 很简单,使用 JS的内置函数 encodeURIComponent 对中文字符串进行转义一下就好了.关于 encodeURIComponent 函数的用法, scape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字).比如,空格符对应的编码是%20. 不会被此方法编码的字符: @ *

linux操作系统下从其他服务器获取的xml字符串中文为乱码,在本地无法解析

问题描述 一个javaweb项目部署在一台服务器上,服务器采用的是linux操作系统,调用其他公司提供的webservice接口获取到一个xml的字符串,然后使用dom在本地解析,得到的字符串是乱码,请问高手们这个问题怎么解决.publicstaticList<Product>readProductDomXml(Stringstr)throwsException{List<Product>products=newArrayList<Product>();Document