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 相关文章推荐
ThinkPHP3.1的Widget新用法
Jun 19 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
PHP滚动日志的代码实现
Jun 10 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
Jan 27 PHP
Yii框架上传图片用法总结
Mar 28 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
php利用gd库为图片添加水印
Nov 09 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP isset()与empty()的使用区别详解
Feb 10 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
PDO::lastInsertId讲解
Jan 29 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 图片水印类代码
2012/08/27 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
js实现飞入星星特效代码
2014/10/17 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
浅谈python迭代器
2017/11/08 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
python 动态调用函数实例解析
2019/10/21 Python
通过实例了解python property属性
2019/11/01 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Python socket处理client连接过程解析
2020/03/18 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
外贸业务员的岗位职责
2013/11/23 职场文书
小学生安全保证书
2014/02/01 职场文书
大学自我评价
2014/02/12 职场文书
公证委托书
2014/08/01 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
教师节领导致辞
2015/07/29 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB