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时中文问题的解决方法相关推荐

  1. 从服务上下载下的日志文件,用UltraEdit打开时中文是乱码解决方法

    我刚才从服务器上下载来的日志文件,后缀是.log,用UltraEdit打开时中文全是乱码,解决方法: 1.高级--->配置---->常规 里的 "自动检测到UTF-8文件&quo ...

  2. Windows 平台中采用 beamer 时中文书签乱码解决方法

    具体做法如下 Step 1: 在 beamer.cls 中找到:                \PassOptionsToPackage{bookmarks=true,%               ...

  3. android汉字显示问号,易安卓e4a输入中文变成问号解决方法

    易安卓e4a在使用过程中,可能会遇到输入中文变成问号的问题,尤其在win8系统下,发现这个问题比较多,应该如何解决呢,请看本站提供的解决方法 方案1.换输入法:推荐换用微软必应输入法.因为目前众多输入 ...

  4. jquery ajax 不执行success,jQuery通过ajax方法获取json数据不执行success的原因及解决方法...

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...

  5. python中json与str转换和出现KeyError的解决方法

    python中json与str转换和出现KeyError的解决方法 json转str str转json KeyError的解决方法 json转str json格式的数据其实就是dict类型的数据,如图 ...

  6. Json返回结果为null属性不显示解决方法

    Json返回结果为null属性不显示解决方法 参考文章: (1)Json返回结果为null属性不显示解决方法 (2)https://www.cnblogs.com/baizhanshi/p/10097 ...

  7. 关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题

    关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题 参考文章: (1)关于通过webclient和JSON格式报文与服务器之间通讯的解决方法和遇到的难题 (2)http ...

  8. Json string value cannot have line breaks(解决方法)

    Json string value cannot have line breaks(解决方法) 参考文章: (1)Json string value cannot have line breaks(解 ...

  9. java json utf-8_java读取json数据发生中文乱码的解决方法

    java读取json数据发生中文乱码的解决方法 发布时间:2020-06-21 15:58:48 来源:亿速云 阅读:268 作者:鸽子 java读取json数据出现乱码的代码://从json文件中读 ...

最新文章

  1. html5 判断手机电脑,H5_0006:JS判断PC,平板,手机平台的方法
  2. html流式布局插件,Jquery瀑布流网格布局插件
  3. linux 文件的目录,Linux文件及目录管理
  4. ES学习笔记之-ClusterState的学习
  5. 干货:实现数据可视化的几个工具选择(工具+编程语言)
  6. linux下启动应用程序,RedHat Linux 9下启动应用程序
  7. DHCP协议++ClientServer架构
  8. Error: Error while compiling statement: FAILED: ParseException line 1:20 cannot recognize input near
  9. sqlloader 直接路径和常规路径_sqlloader
  10. uml 流程图符号 含义
  11. 如何使用Bootbox ?
  12. 计算机图形学设计线宽代码,计算机图形学画圆并改变线宽.pdf
  13. Spark 小文件合并优化实践
  14. 1e9个兵临城下 - 容斥原理
  15. 电路的基本概念(1) 自学笔记
  16. .net6API使用SignalR+vue3聊天+WPF聊天
  17. 基于Proteus无实物STM32入门自学教程(二)--LED流水灯
  18. 计算机知识绘画素材,计算机基础知识及素材.doc
  19. ArcGIS Pro系列教程之登陆及离线授权
  20. 【单片机学习】共阳极数码管的静态显示

热门文章

  1. 蚁群算法和简要matlab来源
  2. 即时与及时有什么区别_什么是即时配送它和快递有什么不同,镖滴新势力
  3. 【学习笔记】8、 字符串的格式化
  4. SAP SD:SAP信贷出口
  5. 一步快速将Smartform output转成生成PDF文件
  6. java 调用SAP RFC函数错误信息集锦
  7. 程序员最害怕的5件事,你中招了吗?
  8. VF02 会计凭证过账时间
  9. Hybris (SAP旗下的软件公司)
  10. 解除ABAP程序编辑锁的方法