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 相关文章推荐
关于时间计算的结总
Dec 06 PHP
生成php程序的php代码
Apr 07 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php错误、异常处理机制(补充)
May 07 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
thinkphp5实现微信扫码支付
Dec 23 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
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
js微信分享实现代码
2020/10/11 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
经理秘书岗位职责
2013/11/14 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
影子教师研修方案
2014/06/14 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
商务经理岗位职责
2014/07/30 职场文书
见习报告格式要求
2014/11/04 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
大学毕业晚会开场白
2015/05/29 职场文书