php 汉字处理 json,php处理json时中文问题的解决方法
php处理json时中文问题的解决方法
在项目里面用到json操作,之前测试都是很正常的,但有时候把对象转换成json的时候,其中有个中文属性变成了null.遇到这种情况怎么办呢?下面小编为大家整理了php处理json时中文问题的解决方法,希望能帮到大家!
操作的代码如下:
复制代码 代码如下:
$usr = new User();
echo json_encode($usr);
?>
很简单的代码,无中文情况一切正常,输出如下:
{"PlatformID":"123213","UserID":"1023"}
一旦有中文的时候会出现两种情况。
第一种情况是对象本身的某个值为中文的属性是utf-8编码,则会有如下输出:
{"PlatformID":"123213","UserID":"1023","UserName":"u00b7u00f0u00b5u00b2u00c9u00b1u00b7u00f0u00ccu00fc"}
其中的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的时候,千万不能忘记转换成原先的编码,否则会输出乱码!
【php处理json时中文问题的解决方法】相关文章:
php 汉字处理 json,php处理json时中文问题的解决方法相关推荐
- 从服务上下载下的日志文件,用UltraEdit打开时中文是乱码解决方法
我刚才从服务器上下载来的日志文件,后缀是.log,用UltraEdit打开时中文全是乱码,解决方法: 1.高级--->配置---->常规 里的 "自动检测到UTF-8文件&quo ...
- Windows 平台中采用 beamer 时中文书签乱码解决方法
具体做法如下 Step 1: 在 beamer.cls 中找到: \PassOptionsToPackage{bookmarks=true,% ...
- android汉字显示问号,易安卓e4a输入中文变成问号解决方法
易安卓e4a在使用过程中,可能会遇到输入中文变成问号的问题,尤其在win8系统下,发现这个问题比较多,应该如何解决呢,请看本站提供的解决方法 方案1.换输入法:推荐换用微软必应输入法.因为目前众多输入 ...
- jquery ajax 不执行success,jQuery通过ajax方法获取json数据不执行success的原因及解决方法...
1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...
- python中json与str转换和出现KeyError的解决方法
python中json与str转换和出现KeyError的解决方法 json转str str转json KeyError的解决方法 json转str json格式的数据其实就是dict类型的数据,如图 ...
- Json返回结果为null属性不显示解决方法
Json返回结果为null属性不显示解决方法 参考文章: (1)Json返回结果为null属性不显示解决方法 (2)https://www.cnblogs.com/baizhanshi/p/10097 ...
- 关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题
关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题 参考文章: (1)关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题 (2)http ...
- Json string value cannot have line breaks(解决方法)
Json string value cannot have line breaks(解决方法) 参考文章: (1)Json string value cannot have line breaks(解 ...
- java json utf-8_java读取json数据发生中文乱码的解决方法
java读取json数据发生中文乱码的解决方法 发布时间:2020-06-21 15:58:48 来源:亿速云 阅读:268 作者:鸽子 java读取json数据出现乱码的代码://从json文件中读 ...
最新文章
- html5 判断手机电脑,H5_0006:JS判断PC,平板,手机平台的方法
- html流式布局插件,Jquery瀑布流网格布局插件
- linux 文件的目录,Linux文件及目录管理
- ES学习笔记之-ClusterState的学习
- 干货:实现数据可视化的几个工具选择(工具+编程语言)
- linux下启动应用程序,RedHat Linux 9下启动应用程序
- DHCP协议++ClientServer架构
- Error: Error while compiling statement: FAILED: ParseException line 1:20 cannot recognize input near
- sqlloader 直接路径和常规路径_sqlloader
- uml 流程图符号 含义
- 如何使用Bootbox ?
- 计算机图形学设计线宽代码,计算机图形学画圆并改变线宽.pdf
- Spark 小文件合并优化实践
- 1e9个兵临城下 - 容斥原理
- 电路的基本概念(1) 自学笔记
- .net6API使用SignalR+vue3聊天+WPF聊天
- 基于Proteus无实物STM32入门自学教程(二)--LED流水灯
- 计算机知识绘画素材,计算机基础知识及素材.doc
- ArcGIS Pro系列教程之登陆及离线授权
- 【单片机学习】共阳极数码管的静态显示