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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
PHP命名空间简单用法示例
Dec 28 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结束标签的使用细节探讨及联想
2013/03/04 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
js实现简单放大镜效果
2020/03/07 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python实现提取文章摘要的方法
2015/04/21 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
在Python中定义一个常量的方法
2018/11/10 Python
超实用的 30 段 Python 案例
2019/10/10 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
餐厅总厨求职信
2014/03/04 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
模特大赛策划方案
2014/05/28 职场文书
优秀毕业生求职信
2014/06/05 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
学生实习证明范文
2014/09/28 职场文书
文体活动总结
2015/02/04 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
单独二胎证明
2015/06/24 职场文书