设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
php5.2 Json不能正确处理中文、GB编码的解决方法 ...
返回列表
查看:
115
|
回复:
0
php5.2 Json不能正确处理中文、GB编码的解决方法
[复制链接]
qz234
当前离线
积分
7694
2588
主题
2588
帖子
7694
积分
论坛元老
论坛元老, 积分 7694, 距离下一级还需 9992305 积分
论坛元老, 积分 7694, 距离下一级还需 9992305 积分
积分
7694
发消息
电梯直达
楼主
发表于 2018-2-14 05:59:24
|
只看该作者
|
倒序浏览
|
阅读模式
php5.2新增的json功能是非常受欢迎的,但是经过测试发现,
json_encode对中文的处理是有问题的,
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.
[U]复制代码[/U] 代码如下:
/*
为了能正确使用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 JSON中文乱码的解决方法详解
教你如何使用PHP输出中文JSON字符串
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
php中json_encode UTF-8中文乱码的更好解决方法
PHP使用json_encode函数时不转义中文的解决方法
php5.4以下版本json不支持不转义内容中文的解决方法
PHP JSON格式的中文显示问题解决方法
PHP json_encode() 函数详解及中文乱码问题
PHP读取mssql json数据中文乱码的解决办法
PHP的Json中文处理解决方案
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端