json_encode() 避免转换中文

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

参考链接:让Json更懂中文(JSON_UNESCAPED_UNICODE)

多学、 多记、 多练、
原文地址:https://www.cnblogs.com/cyfblogs/p/9767732.html