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中实现图片的锐化
Oct 09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 12 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
PHP与Web页面的交互示例详解二
Aug 04 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
php简单实现无限分类树形列表的方法
2015/03/27 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
JScript的条件编译
2007/05/29 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
js的三种继承方式详解
2017/01/21 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
windows系统下Python环境搭建教程
2017/03/28 Python
numpy基础教程之np.linalg
2019/02/12 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
python中什么是面向对象
2020/06/11 Python
python属于解释型语言么
2020/06/15 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
How to spawning asynchronous work in J2EE
2016/08/29 面试题
保荐人的岗位职责
2013/11/19 职场文书
安全生产月演讲稿
2014/05/09 职场文书
护士节活动总结
2014/08/29 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2014年公路养护工作总结
2014/12/04 职场文书