PHP json_encode()函数json不转义中文问题解决办法
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-20 22:18:58 浏览: 评论:0
json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,下面我来给各位整理一个关于json不转义中文问题处理技巧,希望例子能帮助到大家.
如果你调用 PHP 自带的 json_encode() 函数,碰到中文时,中文会被转义掉,例如:
echo json_encode(array('你好'));// 输出: ["\u4f60\u597d"]
这非常恼人,像是一堆乱码,JSON 标准从来没有说要把非 ASCII 字符转义,标准说的是”Any UNICODE character”.
如何禁用掉这种转义呢? 答案是,PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0 版本之前,之后的版本你可以加 JSON_UNESCAPED_UNICODE 选项),你只能换一个新的 JSON 库,为了简单,我简单写了几十行代码,实现一个 json_encode(),代码如下:
- class Util
- {
- static function json_encode($input){
- // 从 PHP 5.4.0 起, 增加了这个选项.
- if(defined('JSON_UNESCAPED_UNICODE')){
- return json_encode($input, JSON_UNESCAPED_UNICODE);
- }
- if(is_string($input)){
- $text = $input;
- $text = str_replace('\\', '\\\\', $text);
- $text = str_replace(
- array("\r", "\n", "\t", "\""),
- array('\r', '\n', '\t', '\\"'),
- $text);
- return '"' . $text . '"';
- }else if(is_array($input) || is_object($input)){
- $arr = array();
- $is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
- foreach($input as $k=>$v){
- if($is_obj){
- $arr[] = self::json_encode($k) . ':' . self::json_encode($v);
- }else{
- $arr[] = self::json_encode($v);
- }
- }
- if($is_obj){
- return '{' . join(',', $arr) . '}';
- }else{
- return '[' . join(',', $arr) . ']';
- }
- }else{
- return $input . '';
- }//开源软件:phpfensi.com
- }
- }
考虑不到的地方,例如判断关联数组(is_obj)的地方,遇到问题再说,你要是不喜欢类,那就自己转成纯函数,换个名字吧.
Tags: json_encode json不转义
相关文章
- ·php json_encode中文乱码解决办法(2013-11-29)
- ·php json_encode实现与中文乱码解决方法(2014-05-30)
- ·PHP json_encode输出josn格式并解决中文乱码(2014-07-29)
- ·php中json_encode gbk/gb2312中文乱码问题(2014-09-20)
- ·php中json_encode UTF-8中文乱码问题(2015-04-04)
- ·php的json_encode不支持JSON_UNESCAPED_UNICODE解决办法(2015-12-10)
- ·解决PHP的json_encode处理中文被转码为全英文的方法(2016-02-16)
- ·Json_encode防止汉字转义成unicode的方法(2019-12-04)
- ·php使用json_encode对变量json编码(2020-11-07)
- ·php中json_encode处理gbk与gb2312中文乱码问题的解决方法(2021-03-19)
- ·php中json_encode UTF-8中文乱码的更好解决方法(2021-04-15)
- ·php json_encode()函数返回json数据实例代码(2021-04-15)
- ·PHP使用json_encode函数时不转义中文的解决方法(2021-04-25)
- ·浅谈json_encode用法(2021-05-15)
- ·Json_encode防止汉字转义成unicode的方法(2021-07-11)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)