> 백엔드 개발 > PHP 튜토리얼 > PHP_php 팁에서 json_encode 함수를 사용할 때 중국어를 이스케이프 처리하지 않는 솔루션

PHP_php 팁에서 json_encode 함수를 사용할 때 중국어를 이스케이프 처리하지 않는 솔루션

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-05-16 20:32:11
원래의
2302명이 탐색했습니다.

이 기사의 예에서는 PHP에서 json_encode 함수를 사용할 때 중국어를 이스케이프 처리하지 않는 솔루션을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.

json_encode 함수는 gbk의 한자를 변환하거나 공백으로 직접 변환하지 않습니다. 이 기사는 json 이스케이프되지 않은 중국어 문제를 처리하는 방법에 대한 몇 가지 팁을 제공할 것입니다.

PHP와 함께 제공되는 json_encode() 함수를 호출하면 중국어 문자가 나타나면 중국어 문자가 이스케이프됩니다. 예:

코드 복사 코드는 다음과 같습니다.
echo json_encode(array('Hello'));
// 출력: ["u4f60u597d"]

이는 횡설수설하는 말처럼 매우 짜증나는 일입니다. JSON 표준에서는 ASCII가 아닌 문자를 이스케이프 처리하지 않는다고 말합니다.
이 이스케이프를 비활성화하는 방법은 무엇입니까? 대답은 PHP 자체 json_encode()가 이 기능을 비활성화할 수 없다는 것입니다(버전 5.4.0 이전에는 JSON_UNESCAPED_UNICODE 옵션을 추가할 수 있음). 이를 위해 새 JSON 라이브러리로만 변경할 수 있습니다. 간단하게 json_encode()를 구현하기 위해 수십 줄의 코드를 작성했습니다.
코드 복사 코드는 다음과 같습니다.
class Util
{
​ 정적 함수 json_encode($input){
​​​​ //PHP 5.4.0부터 이 옵션이 추가되었습니다.
If(정의됨('JSON_UNESCAPED_UNICODE')){
               return json_encode($input, JSON_UNESCAPED_UNICODE);
}
If(is_string($input)){
                $text = $input;
                $text = str_replace('\', '\\', $text);
                $text = str_replace(
                배열("r", "n", "t", """),
array('r', 'n', 't', '\"'),
                     $text);
               '"' 반환 . $text . '"';
            }else if(is_array($input) || is_object($input)){
                $arr = 배열();
$is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
foreach($input as $k=>$v){
If($is_obj){
$arr[] = self::json_encode($k) . ':' . self::json_encode($v);
                     }else{
                               $arr[] = self::json_encode($v);
                }
            }
                if($is_obj){
                      '{'를 반환합니다. Join(',', $arr) '}';
               }그밖에{
'[' 를 반환합니다. Join(',', $arr) ']';
            }
         }그 외{
                 $input '';
을 반환합니다. }
}
}

연관배열(is_obj) 판단 등 고려하지 않은 사항은 문제가 발생하면 이야기하자. 클래스가 마음에 들지 않으면 직접 순수 함수로 변환하고 이름을 바꾸면 된다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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