众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了。
json_encode会将中文转换为unicode编码
例如:'胥'经过json_encode处理后变为'\u80e5',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。
  我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!
测试代码如下:

<?php
class myClass {
public $item1 = 1;
public $item2 = '中文';
function to_json() {
//url编码,避免json_encode将中文转为unicode
$this->item2 = urlencode($this->item2);
$str_json = json_encode($this);
//url解码,转完json后将各属性返回,确保对象属性不变
$this->item2 = urldecode($this->item2);
return urldecode($str_json);
}
}
$c = new myClass();
echo json_encode($c);
echo '<br/>';
echo $c->to_json();
echo '<br/>';
echo json_encode($c);
echo '<br/>';
echo json_encode('胥');
?>

程序输出结果:

{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"

希望本文起到抛砖引玉的作用,收集大家更好的解决方法。

转载于:https://www.cnblogs.com/study100/p/3245553.html

php中json_encode中文编码问题分析相关推荐

  1. Java Web中的中文编码问题分析

    一.为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语.日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个 ...

  2. php json存mysql斜杠_MySQL 存储php中json_encode格式中文问题及解决

    MySQL 存储php中json_encode格式信息  ,遇到中文时, 会变成一堆类似uxxxx信息. 1. 原因分析: 在存储到数据库时!MySQL 不会存储 unicode 字符: MySQL  ...

  3. Java Web中的中文编码

    Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...

  4. 深入分析 Java Web 中的中文编码问题

    深入分析 Java Web 中的中文编码问题 背景: 编码问题一直困扰着程序开发人员,尤其是在 Java 中更加明显,因为 Java 是跨平台的语言,在不同平台的编码之间的切换较多.接下来将介绍 Ja ...

  5. ctf 文件头crc错误_[CTF隐写]png中CRC检验错误的分析

    [CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...

  6. GPUImage滤镜中的shader代码分析,及自定义滤镜

    from: http://blog.csdn.net/vegerjiangsir/article/details/27172143 GPUImage由于使用GPU,顾其在滤镜染色的时候真正使用的是Op ...

  7. [转]关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...

    关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决 转自:http://hi.baidu.com/qinfen ...

  8. Android开发中StackOverflowError错误实例分析

    http://blog.csdn.net/mozhizun/article/details/7051300 http://blog.csdn.net/gaomatrix/article/details ...

  9. HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引

    1. Hbase高级应用 1.1建表高级属性 下面几个shell 命令在hbase操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性 1. BLOOMFILTER 默认是 ...

最新文章

  1. 学Java还是Python?一张图告诉你!
  2. unix mysql命令大全_mySql的一些常用命令
  3. DDR和DDR2的区别
  4. C# webservice调用方法总结
  5. es6 Null 传导运算符
  6. java输出值_java参数传递(超经典)(强烈建议自己先写出程序的输出值)
  7. 在Spring环境下存取properties文件中的数值
  8. c语言控制科学计数法指数位数,控制科学计数法的指数位数
  9. prince2 成功的项目管理_我的PRINCE2故事
  10. 微信小程序推广多多进宝商品,微信小程序跳转拼多多小程序领券页面,微信小程序跳转多多进宝推广链接
  11. linux中find查找文件和查找文件内容
  12. 裂变海报设计的落地干货,为什么海报在裂变活动中这么重要?
  13. 删除idb无法启动 mysql 数据库
  14. android原生4.0,原生Android 4.0系统_手机_手机Android频道-中关村在线
  15. flask爱家租房项目开发(十)
  16. 【编程实践】为了带你搞懂RPC,我们手写了一个RPC框架
  17. java 二进制 表示负数_java中的负数表示
  18. jenkins svn publisher插件使用手册
  19. Mysql中语言分类和区别
  20. Retrofit请求 多条目加载

热门文章

  1. Access denied for user 'root'@'localhost' (using password:YES) 解决方案
  2. [转]分布式文件系统 MogileFS 安装手册
  3. 北京奥运会和上海世博会广告登上巴士 亮相纽约
  4. 关于微信客服消息 40001和45015 模板消息 errcode:40037 遇到的自己挖的坑
  5. 往hdfs写数据无权限
  6. Windows下使用xShell向远程Linux上传文件
  7. iPhone开源项目汇总(更新版)
  8. PIX515防火墙配置策略实例
  9. Linux学习中压缩包格式有哪些?
  10. 企业局域网离不开交换机/路由器/防火墙—Vecloud