> 백엔드 개발 > PHP 튜토리얼 > json_encode가 중국어 문자가 유니코드로 이스케이프되는 것을 방지하는 방법

json_encode가 중국어 문자가 유니코드로 이스케이프되는 것을 방지하는 방법

WBOY
풀어 주다: 2016-07-29 09:02:09
원래의
1050명이 탐색했습니다.

우리 모두 알고 있듯이 json_encode는 일반적으로 json의 한자를 유니코드로 이스케이프하지만 이것이 반드시 우리가 원하는 것은 아닙니다. 때로는 한자 형태의 json 문자열을 얻어야 할 때가 있습니다. 예를 들어, gbk로 인코딩된 json 문자열을 얻어야 합니다(한자 형태의 문자열이 트랜스코딩되는 경우). 좋은 방법 없을까요?

php 관계자는 이러한 요구를 듣고 신뢰할 수 있는 솔루션인 JSON_UNESCAPED_UNICODE를 제공했습니다. 이 매개변수를 사용하면 json_encode가 더 이상 중국어 문자를 유니코드로 변환하지 않도록 할 수 있습니다.

이렇게 하면 문제가 해결될 것 같나요? 이 매개변수를 만족스럽게 사용했을 때 우리는 그것이 아무 소용이 없다는 것을 알았습니다. 자세히 살펴보면 이 매개변수는 PHP 5.4 이후 버전에서만 지원된다는 것을 알 수 있습니다. 이전 PHP는 어떻습니까?

커뮤니티에서 해결 방법을 제공합니다.

<span>1</span><span>function</span> my_json_encode(<span>$arr</span><span>){
</span><span>2</span><span>//</span><span>convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding</span><span>3</span><span>array_walk_recursive</span>(<span>$arr</span>, <span>function</span> (&<span>$item</span>, <span>$key</span>) { <span>if</span> (<span>is_string</span>(<span>$item</span>)) <span>$item</span> = mb_encode_numericentity(<span>$item</span>, <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>); });
</span><span>4</span><span>return</span> mb_decode_numericentity(json_encode(<span>$arr</span>), <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>);
</span><span>5</span> }
로그인 후 복사

그러나 이 방법은 5.2에서는 익명 기능을 지원하지 않기 때문에 5.3에서만 지원됩니다. 해결책은? 익명 함수를 정의하면 됩니다.

위 내용은 json_encode가 중국어 문자가 유니코드로 변환되는 것을 방지하는 방법과 관련 측면을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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