php5.2 Json不能正确处理中文、GB编码的解决方法
发布:smiling 来源: PHP粉丝网 添加日期:2020-11-05 10:50:39 浏览: 评论:0
json_encode对中文的处理是有问题,不能处理GB编码,所有的GB编码都会替换成空字符,下面有个不错的解决方法,大家可以参考下。
php5.2新增的json功能是非常受欢迎的,但是经过测试发现, json_encode对中文的处理是有问题的。
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.代码如下:
- /*
- 为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对json_encode的返回结果稍加处理就可以得到正确的结果了。
- 我写了一个简单的类,将这两个函数包装了一下,
- **/
- class Json{
- public static function encode($str){
- $code = json_encode($str);
- return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
- }
- public static function decode($str){
- return json_decode($str);
- }
- }
- //使用的时候
- Json::encode($code);
- Json::decode($code);
- /**这样可以正确处理utf8编码的中文了。
PS:对于GB编码的中文,我们可以在编码时先转成UTF8编码,再进行编码,解码的时候再进行一个utf8 -> gb的转换就可以了。
另外一般json_encode的结果我们是返回到客户端来使用,我们其实还可以用javascript的unescape函数来对unicode编码的中文进行解码,从而还原成正确的中文。
或者用:$title = mb_convert_encoding($title, 'HTML-ENTITIES', $this->_outCharset);//任意编码下都正常显示。
Tags: php5 2 Json
- 上一篇:php 邮件发送问题解决
- 下一篇:PHP把网页保存为word文件的三种方法
相关文章
- ·php4和php5区别(2013-11-13)
- ·PHP5中使用Web服务访问J2EE应用程序(2013-12-08)
- ·php5类型约束学习笔记(2014-02-10)
- ·php5.5中类级别的常量使用说明(2014-02-22)
- ·php5.3.9中post数据不完整问题解决(2014-09-21)
- ·PHP5.6新特性例子举证(2015-12-10)
- ·PHP5.6 CONST新特性几个例子(2016-08-18)
- ·PHP5.2中PDO的简单使用方法(2019-11-06)
- ·php5.2以下版本无json_decode函数的解决方法(2021-01-10)
- ·php5.3不能连接mssql数据库的解决方法(2021-05-04)
- ·php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总(2021-05-20)
- ·PHP5多态性与动态绑定介绍(2021-05-20)
- ·将PHP从5.3.28升级到5.3.29时Nginx出现502错误(2021-05-25)
- ·php5.4传引用时报错问题分析(2021-07-06)
- ·PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法(2021-08-04)
- ·可兼容php5与php7的cURL文件上传功能实例分析(2021-09-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)