>백엔드 개발 >PHP 튜토리얼 >PHP에서 json_encode를 사용할 때 유니코드 문자가 16진수 엔터티로 인코딩되는 것을 방지하려면 어떻게 해야 합니까?

PHP에서 json_encode를 사용할 때 유니코드 문자가 16진수 엔터티로 인코딩되는 것을 방지하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 01:32:03998검색

How can I prevent Unicode characters from being encoded as hexadecimal entities when using json_encode in PHP?

PHP에서 UTF-8 문자열 처리: json_encode 및 JSON_UNESCAPED_UNICODE

다국어 콘텐츠가 포함된 PHP 스크립트에서 json_encode 함수의 동작은 의문을 제기할 수 있습니다. 유니코드 문자는 16진수 엔터티로 끝나는 경우가 많습니다.

예:

입력: echo $text;
출력: "База данни грешка."

입력: json_encode($text);
출력: "u0411u0430u0437u0430 u0434u0430u043du0 43du0438 u0433u0440u0435u0448u043au0430."

변환 이해

기본적으로 json_encode는 유니코드 문자열을 16진수 엔터티로 인코딩합니다. 이는 유니코드를 지원하지 않는 이전 시스템과의 호환성을 보장하기 위한 JSON의 일반적인 관행입니다.

해결책: JSON_UNESCAPED_UNICODE

PHP 5.4.0에 도입된 JSON_UNESCAPED_UNICODE 플래그 이 변환을 우회할 수 있습니다. 지정되면 json_encode에 UTF-8 문자를 직접 출력하도록 지시합니다.

사용법:

<code class="php">json_encode($text, JSON_UNESCAPED_UNICODE);</code>

이 플래그를 사용하면 출력이 원래 유니코드 문자 인코딩을 유지합니다. :

<code class="php">\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430.</code>

JSON_UNESCAPED_UNICODE 플래그를 사용하면 JSON 출력에서 ​​원래 유니코드 문자를 보존할 수 있습니다. 이는 다국어 콘텐츠로 작업하거나 진정한 유니코드 지원이 필요한 시스템과 통합할 때 특히 유용합니다.

위 내용은 PHP에서 json_encode를 사용할 때 유니코드 문자가 16진수 엔터티로 인코딩되는 것을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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