php json_encode不转义,php json_encode不转义中文汉字的方法

php json_encode 函数在转义含有中文汉字的数据为json格试数据时,会将数据中的中文汉字转换成 unicode 格式的字符,如果我们要保留汉字原有的格式该如何做呢?

json_encode 不转义汉字的方法

1、php版本高于 5.4 的处理方法

在高于5.4版本的php中,可以将 json_encode 函数的第二个参数设置为 JSON_UNESCAPED_UNICODE,则 json_encode 函数处理含有中文汉字的数据时,其中文汉字不会转换成 unicode 格式的字符!

示例代码:<?php

$arr = array('code' => 'success','msg' => '这里是一个提示的内容');

echo json_encode($arr);

//输出的JSON: {"code":"success","msg":"\u8fd9\u91cc\u662f\u4e00\u4e2a\u63d0\u793a\u7684\u5185\u5bb9"}

echo json_encode($arr,JSON_UNESCAPED_UNICODE); // 将第二个参数设置为:JSON_UNESCAPED_UNICODE

//输出的JSON:{"code":"success","msg":"这里是一个提示的内容"}

2、php版本低于 5.4 的处理方法

代于 5.4 版本的php中,json_encode 函数的第二个参数不起作用,则需要自己定义函数来实现不转义汉字的方法。

示例1:

根据网上提供的方法,先将数据中的中文进行urlencode, 在将 json_encode 处理后的字串整体进行 urldecode,就可以啦。可以参考下面的方法!<?php

$arr = array('Name' => '墨初','Host' => 'http://feiniaomy.com');

//需要判断一个php的版本

if(version_compare(PHP_VERSION,'5.4.0','

foreach($arr as $key => $value){

$jsonstr[$key] = urlencode($value);

}

echo urldecode(json_encode($jsonstr));

}else{

echo json_encode($arr);

}

?>

示例2:

对于简单的一组数组可以按照以面的方法来处理,但对于多维数组的转换,可以使用下面定义的函数<?php

$arr = array(

'Name' => '墨初',

'Host' => 'http://feiniaomy.com',

'address' => array(

'Tel' => '1234567890',

'address' => '北京市东城区'

)

);

//自定义函数

function no_json_encode($array){

if(version_compare(PHP_VERSION,'5.4.0','

foreach($array as $key => $value){

if(!is_array($value)){

$jsonstr[$key] = urlencode($value);

}else{

$jsonstr[$key] = urlencode(no_json_encode($value));

}

}

$jsonstr = urldecode(json_encode($jsonstr));

$jsonstr = str_replace(']"', ']', str_replace('"[', '[', $jsonstr));

}else{

$jsonstr = json_encode($array, JSON_UNESCAPED_UNICODE);

}

return $jsonstr;

}

//使用自定义函数 feiniaomy.com

echo no_json_encode($arr);

?>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值