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 防恶意刷新实现代码
May 16 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
php实现图片以base64显示的方法
Oct 13 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
PHP多维数组排序array详解
2017/11/21 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
js post提交调用方法
2014/02/12 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
javascript控制台详解
2015/06/25 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
python paramiko模块学习分享
2017/08/23 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
生日礼品店创业计划书范文
2014/03/21 职场文书
红头文件任命书范本
2014/06/05 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
人力资源部岗位职责
2015/02/11 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS