>백엔드 개발 >PHP 문제 >PHP json이 중국어 왜곡 문자를 디코딩하는 경우 수행할 작업

PHP json이 중국어 왜곡 문자를 디코딩하는 경우 수행할 작업

藏色散人
藏色散人원래의
2020-07-18 10:22:414981검색

잘못된 PHP json 디코드에 대한 해결 방법: 먼저 JSON 처리 전에 문자를 UTF8 형식으로 변환한 다음 백그라운드 PHP 페이지에서 "json_encode"를 사용하여 PHP의 배열 배열을 JSON 문자열로 변환합니다.

PHP json이 중국어 왜곡 문자를 디코딩하는 경우 수행할 작업

PHP json_encode 중국어 잘못된 솔루션

많은 사람들이 Ajax를 사용하여 배경 PHP 페이지와 상호 작용할 때 중국어 문자 문제를 경험했다고 생각합니다. 경량 데이터 교환 형식인 JSON은 매우 널리 사용됩니다. 그러나 PHP를 백엔드 상호 작용으로 사용하면 중국어 문자가 깨질 수 있는 문제가 발생하기 쉽습니다.

JSON은 js와 동일합니다. 즉, JSON을 제출 및 수신용 데이터 형식으로 사용할 때 문자는 UTF8 인코딩으로 처리됩니다. 인코딩 및 데이터베이스 인코딩 UTF8을 사용하지 않으면 중국어 왜곡 문자가 나타나는 것이 매우 쉽습니다. 해결책은 js 또는 PHP로 JSON 데이터를 처리할 때 자연스럽게 UTF8을 사용하는 것입니다.

PHP5.2 이상에서는 json_encode를 내장 함수로 사용하므로 웹사이트 제작자에게 큰 편리함을 제공합니다. 그러나 json_encode는 UTF8로 인코딩된 문자만 지원한다는 점에 유의해야 합니다. 그렇지 않으면 중국어 문자가 깨지거나 비어 있게 됩니다. 값이 나타납니다.

해결 방법은 다음 두 단계로 나누어집니다.

1단계

JSON을 처리할 때 문자가 UTF8로 인코딩되었는지 확인하세요. 특히 데이터베이스 인코딩과 페이지 인코딩을 모두 UTF8로 변경할 수 있습니다. 물론 gbk 인코딩을 사용하려는 경우 JSON을 처리하기 전에 문자를 UTF8로 변환할 수 있습니다. PHP에는 다음과 같은 메소드가 있습니다:

<?php  
     $data="JSON中文";  
     $newData=iconv("GB2312","UTF-8//IGNORE",$data);  
     echo $newData;  
     //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。  
     //或是("GB2312","UTF-8",$data);  
?>

Step2

배경 PHP 페이지(페이지가 UTF-8로 인코딩되었거나 문자가 UTF-8로 변환됨)는 json_encode를 사용하여 변환합니다. PHP의 배열 배열은 JSON 문자열입니다. 예:

<?php  
    $testJSON=array(&#39;name&#39;=>&#39;中文字符串&#39;,&#39;value&#39;=>&#39;test&#39;);  
    echo json_encode($testJSON);  
?>

출력 결과를 다음과 같이 봅니다.

{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}

UTF8을 사용하여 인코딩된 문자를 사용하더라도 json_encode에서 중국어 문자 깨짐이 발생하는 것을 볼 수 있습니다. 해결 방법은 json_encode를 사용하기 전에 urlencode() 함수를 사용하여 문자를 처리한 다음 json_encode를 사용하고 결과를 출력할 때 urldecode() 함수를 사용하여 다시 변환하는 것입니다. 자세한 내용은 다음과 같습니다.

<?php  
    $testJSON=array(&#39;name&#39;=>&#39;中文字符串&#39;,&#39;value&#39;=>&#39;test&#39;);  
    //echo json_encode($testJSON);  
    foreach ( $testJSON as $key => $value ) {  
        $testJSON[$key] = urlencode ( $value );  
    }  
    echo urldecode ( json_encode ( $testJSON ) );  
?>

출력 결과 보기:

{“name”:”中文字符串”,”value”:”test”}

이제 한자가 성공적으로 출력되었습니다. json_encode를 자유롭게 사용해 보세요. 이러한 방식으로, 프론트엔드 자바스크립트에서 Ajax가 eval을 수신할 때 PHP 배경의 JSON 문자열 출력은 중국어로 왜곡되어 표시되지 않습니다. 왜냐하면 js도 PHP와 유사한 UTF8 형식의 JSON 형식 데이터를 처리하기 때문입니다. PHP 페이지를 수신합니다. JSON 문자열은 문제를 일으키지 않습니다.

추천: "PHP 튜토리얼"

위 내용은 PHP json이 중국어 왜곡 문자를 디코딩하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.