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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
服务器web工具 php环境下
Dec 29 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
php文件上传类完整实例
May 14 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
基于php编程规范(详解)
Aug 17 PHP
通过源码解析Laravel的依赖注入
Jan 22 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
May 20 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
基于jQuery选择器的整理集合
2013/04/26 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python中while和for的区别总结
2019/06/28 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
国贸专业毕业求职信
2014/06/11 职场文书
小学生春游活动方案
2014/08/20 职场文书
改革共识倡议书
2014/08/29 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
团拜会主持词
2015/07/04 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP