您现在的位置是:首页 > 程序 > php网站首页php
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);
上一篇:YzmCMS v3.3正式版发布
下一篇:Ecshop后台分页加搜索总结
相关文章
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~