Home > Backend Development > PHP Tutorial > php json_decode ,不能 转换成中文

php json_decode ,不能 转换成中文

WBOY
Release: 2016-06-06 20:50:36
Original
1250 people have browsed it

以前遇到过 将json , json_decode 后出现中文乱码 ,但至少能转换 ,这次 竟然不能转换成中文 ,

很郁闷 ,显示如下 u9633u9633u4ecau5e74u5fc5u53d1u8d22 ,编码问题还是 ……

回复内容:

以前遇到过 将json , json_decode 后出现中文乱码 ,但至少能转换 ,这次 竟然不能转换成中文 ,

很郁闷 ,显示如下 u9633u9633u4ecau5e74u5fc5u53d1u8d22 ,编码问题还是 ……

唉,我都瞧不起我自己了, 亲们,存库时,我忘了转义

//PHP版本5.4以上:
json_encode($data,JSON_UNESCAPED_UNICODE);

//PHP版本5.2以上才有json_encode/json_decode系列函数。
//PHP版本5.2-5.3,可以利用PHP的urlencode/urldecode的组合使用,可以达到类似的保留中文的效果。
//示例如下:代码里的MyJsonEncode和MyJsonDecode函数可以保留中文。

<code>//数组转换保留为中文的JSON字符串
function MyJsonEncode($data){
    return urldecode(json_encode(MyUrlEncode($data)));
    //需要PHP版本5.4以上:
    //return json_encode($data,JSON_UNESCAPED_UNICODE);
}
//保留中文的JSON字符串转换为数组
function MyJsonDecode($data){
    $data = urlencode($data);
    $data = str_replace("%7B",'{',$data);
    $data = str_replace("%7D",'}',$data);
    $data = str_replace("%5B",'[',$data);
    $data = str_replace("%5D",']',$data);
    $data = str_replace("%3A",':',$data);
    $data = str_replace("%2C",',',$data);
    $data = str_replace("%22",'"',$data);
    return MyUrlDecode(json_decode($data,true));
}
//自定义的URL编码
function MyUrlEncode($data) {
    //可对关联数组进行URL编码,并处理换行符  
    //内部递归调用
    //用于MyJsonEncode函数调用
    if(!is_array($data)){
        $data = str_replace("\r",'\r',$data);
        $data = str_replace("\n",'\n',$data);
        $data = urlencode($data);
    }
    else {
        foreach($data as $key=>$value) {
            $data[MyUrlEncode($key)] = MyUrlEncode($value);
            if((string)MyUrlEncode($key)!==(string)$key){
                unset($data[$key]);
            }
        }
    }
    return $data;
}
//自定义的URL解码
function MyUrlDecode($data) {
    //可对关联数组进行URL解码,并处理换行符  
    //内部递归调用
    //用于MyJsonDecode函数调用
    if(!is_array($data)){
        $data = urldecode($data);
        $data = str_replace('\r',"\r",$data);
        $data = str_replace('\n',"\n",$data);
    }
    else {
        foreach($data as $key=>$value) {
            $data[MyUrlDecode($key)] = MyUrlDecode($value);
            if((string)MyUrlDecode($key)!==(string)$key){
                unset($data[$key]);
            }
        }
    }
    return $data;
}
</code>
Copy after login

//以上代码来自MyPHP开源函数库。
//GitHub开源地址:https://github.com/MoonLord-LM/MyPHP
//刷个友链。我的Blog:http://www.moonlord.cn

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template