> 백엔드 개발 > PHP 튜토리얼 > php json_decode ,不能 转换成中文

php json_decode ,不能 转换成中文

WBOY
풀어 주다: 2016-06-06 20:50:36
원래의
1250명이 탐색했습니다.

以前遇到过 将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>
로그인 후 복사

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

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿