首页 > php > faq > 1.PHP中文JSON乱码

1.PHP中文JSON乱码

php5.4以下json_encode方法封装JSON数据时会有乱码.

1 加入header采用utf-8编码

php的header加入Content-type:text/html;charset=utf-8. 示例代码:

header("Content-type:text/html;charset=utf-8");

2 修改封装JSON方法

低于5.4版本采用php自带的json_encode方法没有中文乱码. php5.4版本以下修改php的封装json的方法. 示例代码:

/**
* 对变量进行 JSON 编码
* @param mixed value 待编码的 value ,除了resource 类型之外,可以为任何数据类型,该函数只能接受 UTF-8 编码的数据
* @return string 返回 value 值的 JSON 形式
*/
function json_encode_ex($value)
{
    if (version_compare(PHP_VERSION,'5.4.0','<'))
    {
        $str = json_encode($value);
        $str = preg_replace_callback(
        "#\\\u([0-9a-f]{4})#i",
        function($matchs)
        {
             return iconv('UCS-2BE', 'UTF-8', pack('H4', $matchs[1]));
        },
         $str
        );
        return $str;
    }
    else
    {
        return json_encode($value, JSON_UNESCAPED_UNICODE);
    }
}

echo json_encode_ex($serverArr);

3 另外一种解决php解析json格式乱码的方式

升级php到5.5版本以上就可以解决json乱码的问题了.

转载请保留原文链接.