json_encode() 避免转换中文
我们都知道,json_encode()可以将数据转换为json格式,而且只针对utf8编码的数据有效,而且在转换中文的时候,将中文转换成不可读的”u***”的格式,但是某些情况下是中文是不能转换成这样的,比如在微信公众号创建自定义菜单的时候,传递的json数据中,如果有中文,必须是形如这种的:
1 {
2 "name": "扫码",
3 "sub_button": [
4 {
5 "type": "scancode_waitmsg",
6 "name": "扫码带提示",
7 "key": "rselfmenu_0_0",
8 "sub_button": [ ]
9 },
10 {
11 "type": "scancode_push",
12 "name": "扫码推事件",
13 "key": "rselfmenu_0_1",
14 "sub_button": [ ]
15 }
16 ]
17 },
那么,遇到这种情况的时候,该怎么办呢,也不难,json_encode()函数第二个参数在PHP5.4中增加了一个选项,叫做:JSON_UNESCAPED_UNICODE,故名思议, 就是说, Json不要编码Unicode.
1 $postArr = array(
2 'button'=>array(
3 array(
4 //一级菜单
5 'name'=>'百度',
6 'type'=>'view',
7 'url'=>'https://www.baidu.com/'
8 ),
9 )
10 );
11 $postJson = urldecode(json_encode( $postArr,JSON_UNESCAPED_UNICODE));
12 var_dump($postJson);
13 die;
结果为:
{
"button":[
{
"name":"百度",
"type":"view",
"url":"https://www.baidu.com/"
}
]
}