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_SELF的安全问题
Sep 05 PHP
php获取新浪微博数据API实例
Nov 12 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
May 10 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
PHP多进程简单实例小结
Nov 09 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 Cookie的一个使用注意点
2008/11/08 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
Using the TextRange Object
2006/10/14 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python 元组的使用方法
2020/06/09 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
主治医师岗位职责
2013/12/10 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2015年父亲节寄语
2015/03/23 职场文书
考研导师推荐信范文
2015/03/27 职场文书