php 解决json_encode中文UNICODE转码问题

        最近有些跨部门的工作,具体是由java组同事发送数据,由php来验证数据的真实性,中间因为有些

中文数据的原因导致转码问题,先记录一下。

       参考了一些文章有如下几种解决办法:

              1.在php5.4及以上的版本中,Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

             2.把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。

            3.对unicode码再进行解码,解码函数如下:

function decodeUnicode($str)
{
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
        create_function(
            '$matches',
            'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'
        ),
        $str);
}
$arr = array('name1':"中文",'name2':'abc12');
$jsonstr = decodeUnicode(json_encode($arr));

         因为我们有的项目目前是php5.3的版本,第一种不予考虑,第二种如果是多维数组还要递归处理相对繁琐了点,最终使用了

第三种方法,参考链接:

       https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-char

     参考博客:https://blog.csdn.net/hanzengyi/article/details/78294762#commentBox

你可能感兴趣的:(php)