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邮件类
Jan 03 PHP
PHP 数组实例说明
Aug 18 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
更改localhost为其他名字的方法
Feb 10 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
php和asp语法上的区别总结
May 12 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
基于empty函数的判断详解
2013/06/17 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
Weblogic的布署方式
2013/08/23 面试题
运动会广播稿100字
2014/01/11 职场文书
高中学生期末评语
2014/04/25 职场文书
售房协议书范本2014
2014/10/23 职场文书
谢师宴答谢词
2015/01/05 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
国庆节新闻稿
2015/07/17 职场文书
军训通讯稿范文
2015/07/18 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android