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学习笔记之三 数据库基本操作
Jan 17 PHP
php流量统计功能的实现代码
Sep 29 PHP
解析strtr函数的效率问题
Jun 26 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
php截取字符串函数分享
Feb 02 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
Jun 06 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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 验证图片生成函数
2009/05/21 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
Linux下Python获取IP地址的代码
2014/11/30 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
销售代表求职自荐信
2013/10/01 职场文书
综合内勤岗位职责
2014/04/14 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
导游词之清晏园
2019/11/22 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
asyncio异步编程之Task对象详解
2022/03/13 Python
MySQL 数据库范式化设计理论
2022/04/22 MySQL
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技