php5.2 Json不能正确处理中文、GB编码的解决方法


Posted in PHP onMarch 28, 2014

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);//任意编码下都正常显示 
********/
PHP 相关文章推荐
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php UTF-8、Unicode和BOM问题
May 18 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
php数据类型判断函数有哪些
Sep 23 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
功能强大的php分页函数
Jul 20 PHP
PHP类相关知识点实例总结
Sep 28 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 #PHP
小谈php正则提取图片地址
Mar 27 #PHP
php顺序查找和二分查找示例
Mar 27 #PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 #PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 #PHP
php去除换行(回车换行)的三种方法
Mar 26 #PHP
php的memcache类分享(memcache队列)
Mar 26 #PHP
You might like
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
php取出数组单个值的方法
2018/03/12 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python 元类实例解析
2018/04/04 Python
将python代码和注释分离的方法
2018/04/21 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
班干部竞选演讲稿
2014/04/24 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
特此通知格式
2015/04/27 职场文书
交通处罚决定书
2015/06/24 职场文书
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
Golang连接并操作MySQL
2022/04/14 MySQL