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模拟SQL Server的两个日期处理函数
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php json_encode奇怪问题说明
Sep 27 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
JS模板实现方法
2013/04/03 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python生成日历实例解析
2014/08/21 Python
Python单例模式实例详解
2017/03/01 Python
使用python实现生成用户信息
2017/03/20 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python3.7 的新特性详解
2019/07/25 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python argparse模块应用实例解析
2019/11/15 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Python anaconda安装库命令详解
2021/10/16 Python