php中json_encode中文编码问题分析


Posted in PHP onSeptember 13, 2011

例如:'胥'经过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"

希望本文起到抛砖引玉的作用,收集大家更好的解决方法……!
PHP 相关文章推荐
PHP开发文件系统实例讲解
Oct 09 PHP
php数组总结篇(一)
Sep 30 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
PHP无限分类(树形类)
Sep 28 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
Mar 18 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
8个必备的PHP功能开发
Oct 02 PHP
Yii2实现同时搜索多个字段的方法
Aug 10 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 #PHP
PHP获取MAC地址的函数代码
Sep 11 #PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 #PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 #PHP
20个PHP常用类库小结
Sep 11 #PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 #PHP
php正则表达式(regar expression)
Sep 10 #PHP
You might like
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JQuery球队选择实例
2015/05/18 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
python使用arp欺骗伪造网关的方法
2015/04/24 Python
RC4文件加密的python实现方法
2015/06/30 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python语言的变量认识及操作方法
2018/02/11 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
2014年财政工作总结
2014/12/10 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
Java Spring Lifecycle的使用
2022/05/06 Java/Android