>백엔드 개발 >PHP 문제 >PHP json_encode 문자 깨짐 문제를 해결하는 방법

PHP json_encode 문자 깨짐 문제를 해결하는 방법

藏色散人
藏色散人원래의
2020-07-09 12:36:353822검색

PHP json_encode 왜곡된 코드에 대한 해결 방법: 먼저 데이터베이스 인코딩과 페이지 인코딩을 UTF8로 변경한 다음 "json_encode"를 사용하여 PHP의 배열 배열을 JSON 문자열로 변환하고 마지막으로 urlencode 함수를 사용하여 처리합니다.

PHP json_encode 문자 깨짐 문제를 해결하는 방법

PHP json_encode 중국어 왜곡 솔루션

많은 사람들이 Ajax를 사용하여 배경 PHP 페이지와 상호 작용할 때 중국어 문자 문제를 경험했다고 생각합니다. 경량 데이터 교환 형식으로 JSON은 매우 널리 사용됩니다. 그러나 PHP를 백그라운드 상호 작용으로 사용하면 중국어 문자가 깨질 수 있는 문제가 발생하기 쉽습니다. JSON은 js와 동일합니다. 클라이언트 문자는 UTF8 형식으로 처리됩니다. 즉, JSON을 전송 및 수신용 데이터 형식으로 사용할 때 문자는 UTF8로 인코딩됩니다. UTF8을 사용하면 중국어 왜곡 문자가 나타나는 것이 매우 쉽습니다. 해결책은 js 또는 PHP로 JSON 데이터를 처리할 때 자연스럽게 UTF8을 사용하는 것입니다.

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

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

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_encode 문자 깨짐 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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