php中json_encode中文编码问题分析
众所周知使用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中文编码问题分析相关推荐
- Java Web中的中文编码问题分析
一.为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语.日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个 ...
- php json存mysql斜杠_MySQL 存储php中json_encode格式中文问题及解决
MySQL 存储php中json_encode格式信息 ,遇到中文时, 会变成一堆类似uxxxx信息. 1. 原因分析: 在存储到数据库时!MySQL 不会存储 unicode 字符: MySQL ...
- Java Web中的中文编码
Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...
- 深入分析 Java Web 中的中文编码问题
深入分析 Java Web 中的中文编码问题 背景: 编码问题一直困扰着程序开发人员,尤其是在 Java 中更加明显,因为 Java 是跨平台的语言,在不同平台的编码之间的切换较多.接下来将介绍 Ja ...
- ctf 文件头crc错误_[CTF隐写]png中CRC检验错误的分析
[CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...
- GPUImage滤镜中的shader代码分析,及自定义滤镜
from: http://blog.csdn.net/vegerjiangsir/article/details/27172143 GPUImage由于使用GPU,顾其在滤镜染色的时候真正使用的是Op ...
- [转]关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...
关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决 转自:http://hi.baidu.com/qinfen ...
- Android开发中StackOverflowError错误实例分析
http://blog.csdn.net/mozhizun/article/details/7051300 http://blog.csdn.net/gaomatrix/article/details ...
- HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引
1. Hbase高级应用 1.1建表高级属性 下面几个shell 命令在hbase操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性 1. BLOOMFILTER 默认是 ...
最新文章
- 学Java还是Python?一张图告诉你!
- unix mysql命令大全_mySql的一些常用命令
- DDR和DDR2的区别
- C# webservice调用方法总结
- es6 Null 传导运算符
- java输出值_java参数传递(超经典)(强烈建议自己先写出程序的输出值)
- 在Spring环境下存取properties文件中的数值
- c语言控制科学计数法指数位数,控制科学计数法的指数位数
- prince2 成功的项目管理_我的PRINCE2故事
- 微信小程序推广多多进宝商品,微信小程序跳转拼多多小程序领券页面,微信小程序跳转多多进宝推广链接
- linux中find查找文件和查找文件内容
- 裂变海报设计的落地干货,为什么海报在裂变活动中这么重要?
- 删除idb无法启动 mysql 数据库
- android原生4.0,原生Android 4.0系统_手机_手机Android频道-中关村在线
- flask爱家租房项目开发(十)
- 【编程实践】为了带你搞懂RPC,我们手写了一个RPC框架
- java 二进制 表示负数_java中的负数表示
- jenkins svn publisher插件使用手册
- Mysql中语言分类和区别
- Retrofit请求 多条目加载
热门文章
- Access denied for user 'root'@'localhost' (using password:YES) 解决方案
- [转]分布式文件系统 MogileFS 安装手册
- 北京奥运会和上海世博会广告登上巴士 亮相纽约
- 关于微信客服消息 40001和45015 模板消息 errcode:40037 遇到的自己挖的坑
- 往hdfs写数据无权限
- Windows下使用xShell向远程Linux上传文件
- iPhone开源项目汇总(更新版)
- PIX515防火墙配置策略实例
- Linux学习中压缩包格式有哪些?
- 企业局域网离不开交换机/路由器/防火墙—Vecloud