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 相关文章推荐
web server使用php生成web页面的三种方法总结
Oct 28 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
php格式化时间戳
Dec 17 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
PHP时间类完整代码实例
Feb 26 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
在Python中使用Neo4j的方法
2019/03/14 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
小学数学课后反思
2014/04/23 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
元旦晚会开场白
2015/05/29 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL