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\/"
}
]
}
