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 相关文章推荐
第六节--访问属性和方法
Nov 16 PHP
简单的php新闻发布系统教程
May 09 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
php文件缓存类汇总
Nov 21 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
php文件上传类的分享
Jul 06 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 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
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
python 实现端口扫描工具
2020/12/18 Python
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
database面试题
2013/03/28 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
大学自我评价
2014/02/12 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
创建文明城市标语
2014/06/16 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL