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


Posted in PHP onSeptember 19, 2016

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 相关文章推荐
PHP配置心得包含MYSQL5乱码解决
Nov 20 PHP
php日历[测试通过]
Mar 27 PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
PHP实现下载功能的代码
Sep 29 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP扩展Swoole实现实时异步任务队列示例
Apr 13 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 #PHP
PHP 接入支付宝即时到账功能
Sep 18 #PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 #PHP
php mysql 封装类实例代码
Sep 18 #PHP
thinkphp自带验证码全面解析
Sep 18 #PHP
php操纵mysqli数据库的实现方法
Sep 18 #PHP
php微信公众账号开发之前五个坑(一)
Sep 18 #PHP
You might like
把77A收信机改造成收音机
2021/03/02 无线电
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
js function使用心得
2010/05/10 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
有针对性的求职自荐信
2013/11/14 职场文书
教师节演讲稿
2014/05/06 职场文书
给市场的环保建议书
2014/05/14 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
实习指导老师意见
2015/06/04 职场文书
村官2015年度工作总结
2015/10/14 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
实操Python爬取觅知网素材图片示例
2021/11/27 Python
maven依赖的version声明控制方式
2022/01/18 Java/Android
python实现商品进销存管理系统
2022/05/30 Python
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技