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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP单例模式模拟Java Bean实现方法示例
Dec 07 PHP
解决laravel session失效的问题
Oct 14 PHP
利用ajax+php实现商品价格计算
Mar 31 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
树结构之JavaScript
2017/01/24 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Django实现表单验证
2018/09/08 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
老人祝寿主持词
2014/03/28 职场文书
六一节目主持词
2014/04/01 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
大学生村官演讲稿
2014/04/25 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
清洁工个人总结
2015/03/04 职场文书
500字作文之周记
2019/12/13 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技