开启辅助访问 充值VIP充值豆豆
QQ登录 自动登录 注册 找回密码
查看: 7413|回复: 0

php处理json时中文问题的解决方法[PHP教程]

[复制链接]

该用户从未签到

156

主题

156

帖子

2万

豆豆

超级版主

光头春 发表于 2017-9-12 23:40:17 | 显示全部楼层 |阅读模式
操作的代码如下:
复制代码 代码如下:

<?php
$usr = new User();
echo json_encode($usr);
?>

很简单的代码,无中文情况一切正常,输出如下:
{"PlatformID":"123213","UserID":"1023"}
一旦有中文的时候会出现两种情况。

第一种情况是对象本身的某个值为中文的属性是utf-8编码,则会有如下输出:


{"PlatformID":"123213","UserID":"1023","UserName":"\u00b7\u00f0\u00b5\u00b2\u00c9\u00b1\u00b7\u00f0\u00cc\u00fc"}
其中的UserName是非人类语言,这个是正常的,如果我们用firebug看下就是中文的。(这个纠结了我半天)

第二种情况是非utf-8编码,输出会变成null:

{"PlatformID":"123213","UserID":"1023","UserName":null}
很奇怪,查了手册后知道json_encode是只对utf-8有效,其它编码均会变为null.


下面就开始解决编码转化的问题。
在php.net上看到别人的函数如下:
复制代码 代码如下:

private function to_utf8($in)
{
if (is_array($in)) {
foreach ($in as $key => $value)
{
$out[$this->to_utf8($key)] = $this->to_utf8($value);
}
}
elseif(is_string($in))
{
if(mb_detect_encoding($in) != "UTF-8")
return utf8_encode($in);
else
return $in;
}
else
{
return $in;
}
return $out;
}

于是拿下来转换编码发现已经不为null.欣喜之下用firebug打开,发现并不是我原来的中文字符....开始纠结......
难道是要让他转换成原来的编码?回去寻找原始编码......
测试开始:

1.把$usr->UserName直接输出,页面头设置charset=utf-8.乱码
2.echo json_encode($usr)输出UserName=null
3.页面头设置为charset=gbk,输出正确->可以确定原编码为gbk
最后通过IE,Chrome,Firefox测试得出结论:


1.保证页面字符集与数据库一致,输出一定正常 。
2.做json_encode时保证数据编码是utf-8,json_decode正常。
3.如果要对非utf-8字符做json_encode,先转换成utf-8。
4.对非utf-8字符做json_decode的时候,千万不能忘记转换成原先的编码,否则会输出乱码!!
困扰了一天的问题终于搞定了。
其它思必达学院教程推荐:
后盾网vip html5视频教程(共40个集)
2015年6月3日签到记录贴
html5模板源码html5响应式网站模板手机网站共260套
WP百科网Discuz搭建论坛基础教程(更新至第10课)
《Adobe Audition 3.0网络音乐编辑入门与提高》随书光盘[光盘镜像]
《传智播客巴巴运动网106后视频》[压缩包]
《Dreamweaver 8 完美网站建设从入门到精通》(Dreamweaver 8)随书光盘[压缩包]
《站长大学网赚视频教程50集&屠龙团队网赚教程黄金版》2010[压缩包]
《Dw jQuery开发创建交互式图片库视频教程》(Dw jQuery Projects Creating an Interactive Video Galle
《计算机图形学》((美国)Peter Shirley)清晰版[DJVU]资料下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站资源全部来自网络和网友分享,如有侵犯您的权益,请联系网站QQ,或发邮件至[email protected]。本网站尊重知识产权,无意侵犯知识产品,如有,联系网站人员,会第一时间删除!

小白基地,是小白资源网的官方网站,思必达学院官网,提供最新的创业技术支持与创业资讯,提供最新的思必达教程。是IT小白网友学习资源分享基地,中国互助创业资源网。提供诸如JAVA、PHP、MySQL、ASP、C语言等各类程序开发的教程资源。

快速回复 返回顶部 返回列表
世界未解之谜大全 网上兼职招聘信息 南宁大学生兼职网