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 相关文章推荐
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
PHP中PDO的错误处理
Sep 04 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
orm获取关联表里的属性值
Apr 17 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
Python类定义和类继承详解
2015/05/08 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
C#中的验证控件有几种
2014/03/08 面试题
教学个人的自我评价分享
2014/02/16 职场文书
厂长岗位职责
2014/02/19 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
《画风》教学反思
2014/04/16 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
优秀党员推荐材料
2014/12/18 职场文书
党员转正申请报告
2015/05/15 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
Android中的Launch Mode详情
2022/06/05 Java/Android