php json_encode 中文乱码解决方法
   ·  
 本文列举3个方法,实现json_encode()后的string显示中文问题。
做接口时不需要,但存log时帮了大忙了。
在贴代码前,必须贴上官方param和return,链接:http://php.net/manual/zh/function.json-encode.php
参数
- 
   
待编码的
value,除了resource 类型之外,可以为任何数据类型该函数只能接受 UTF-8 编码的数据
 - 
   
由以下常量组成的二进制掩码:
JSON_HEX_QUOT,JSON_HEX_TAG,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT,JSON_UNESCAPED_UNICODE. 
value
  options
  
返回值
编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。
| 
        
        1
        
       
        2
        
       
        3
        
       
        4
        
       
        5
        
       
        6
        
       
        7
        
       
        8
        
       
        9
        
       
        10
        
       
        11
        
       
        12
        
       
        13
        
       
        14
        
       
        15
        
       
        16
        
       
        17
        
       
        18
        
       
        19
        
       
        20
        
       
        21
        
       
        22
        
       
        23
        
       
        24
        
       
        25
        
       
        26
        
       
        27
        
       
        28
        
       
        29
        
       
        30
        
       
        31
        
       
        32
        
       
        33
        
       
        34
        
       
        35
        
       
        36
        
       
        37
        
       
        38
        
       
        39
        
       
        40
        
       
        41
        
       
        42
        
       
        43
        
       
        44
        
       
        45
        
       
        46
        
       
        47
        
       
        48
         | 
      
       <?php
        // json_encode() 保持中文方法详解
        $arr [ 'city' ] =  '北京' ;
        $arr [ 'name' ] =  'weilong' ;
        // 直接输出
        // Res: {"city":"\u5317\u4eac","name":"weilong"}
        echo  json_encode( $arr ),  "\n" ;
        // 1. 加参数,PHP版本>5.4.0
        // Res: {"city":"北京","name":"weilong"}
        echo  json_encode( $arr , JSON_UNESCAPED_UNICODE),  "\n" ;   // php > 5.4.0
        // 2. 正则替换,json_encode后,正则将编码替换成中文
        // Res: {"city":"北京","name":"weilong"}
        echo  preg_replace( "#\\\u([0-9a-f]{4})#ie" ,  "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))" , json_encode( $arr )),  "\n" ;
        // 3. urldecode()、urlencode()函数,不推荐
        // Res1: null, Res2: {"city":"北京","name":"weilong"}
        echo  urldecode(json_encode(urlencode( $arr ))),  "\n" ;
        $arr [ 'city' ] = urlencode( $arr [ 'city' ]);   // urlencode()参数必须是string
        echo  urldecode(json_encode( $arr )),  "\n" ;
        // 另外注意json_decode()参数区别。
        $arr [ 'city' ] =  '北京' ;
        $arr [ 'name' ] =  'weilong' ;
        $str  = json_encode( $arr );
        $str2  = json_decode( $str );
        $str3  = json_decode( $str , true);
        print_r( $str2 );  // object
        /* Res:
        stdClass Object
        (
             [city] => 北京
             [name] => weilong
        ) */
        print_r( $str3 );  // array
        /* Res:
        Array
        (
             [city] => 北京
             [name] => weilong
        )
        */
         | 
     
 新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐


所有评论(0)