当前位置:   article > 正文

php中数组转json时汉字如何不变成unicode编码保留汉字,json_encode不转义中文汉字的方法...

json_encode 保存中文

摘要:最近在开发接口,用的是json格式,但是json_encode后出现了类似"\u5c0f\u8c61" 的unicode字符。

那么如何才能使json_encode不转义汉字呢?

方法1

如果你的php版本是5.4+, 那么恭喜你,一个参数JSON_UNESCAPED_UNICODE就能搞定...

最近在开发接口,用的是json格式,但是json_encode后出现了类似"\u5c0f\u8c61" 的unicode字符。

那么如何才能使json_encode不转义汉字呢?

方法1

如果你的php版本是5.4+, 那么恭喜你,一个参数JSON_UNESCAPED_UNICODE就能搞定,如:

$arr = array('name'=>'张三','sex'=>'男','address'=>array('中国','河北','邯郸',array('邯郸','邯郸学院')));

echo json_encode($arr, JSON_UNESCAPED_UNICODE);

方法2

如果不幸由于种种原因你的php无法升到高版本,那么就要自定义函数了:

首先我在网上找了好多方法,思路是先把字段中的中文urlencode, 在json_encode后将得到的字串整体urldecode,网上提供的解决方法是这样的:

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

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

}

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

这种方法很巧妙,但是只能对于一维数组管用,如果数组是多维的,就不能用了,于是我经过多次测试,写出了一个兼容多维数组的方法:$arr = array('name'=>'张三','sex'=>'男','address'=>array('中国','河北','邯郸',array('邯郸','邯郸学院')));

function my_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(my_json_encode($value));

}

}

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

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

}else{

$jsonstr = json_encode($array, JSON_UNESCAPED_UNICODE);  //必须PHP5.4+

}

return $jsonstr;

}

$jsonstr = my_json_encode($arr);

var_dump($jsonstr);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/531797
推荐阅读
相关标签
  

闽ICP备14008679号