"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP의 json_encode 함수가 UTF-8 문자열을 16진수 엔터티로 변환하는 이유는 무엇입니까?

PHP의 json_encode 함수가 UTF-8 문자열을 16진수 엔터티로 변환하는 이유는 무엇입니까?

2024년 11월 11일에 게시됨
검색:343

Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

PHP json_encode 함수는 UTF-8 문자열을 16진수 엔터티로 변환합니다: 문제를 해결하는 이유와 방법

PHP json_encode 함수는 PHP 변수를 인코딩할 수 있습니다 JSON(JavaScript Object Notation)으로 변환합니다. 그러나 UTF-8 인코딩에서 유니코드 문자를 처리할 때 함수는 기본적으로 해당 문자를 16진수 엔터티로 변환할 수 있습니다. 이는 JSON이 비ASCII 문자를 나타내는 멀티바이트 문자인 UTF-8 문자를 기본적으로 지원하지 않기 때문입니다.

PHP가 UTF-8 문자열을 16진수 엔터티로 변환하는 이유는 무엇입니까?

PHP의 json_encode 함수는 JSON 사양을 사용합니다. 이는 ASCII 문자로 표현할 수 없는 유니코드 문자가 16진수 이스케이프 시퀀스를 사용하여 인코딩되어야 함을 나타냅니다. 이렇게 하면 UTF-8을 지원하지 않을 수 있는 이전 응용 프로그램 및 장치와의 호환성이 보장됩니다.

변환 문제 해결

이 문제를 해결하고 UTF-8 변환을 방지하려면 문자열을 16진수 엔터티로 변환하기 위해 PHP는 버전 5.4.0에서 JSON_UNESCAPED_UNICODE 옵션을 도입했습니다. 이 옵션은 비ASCII 문자에 대해 16진수 이스케이프 시퀀스 대신 유니코드 코드 포인트를 사용하도록 json_encode에 지시합니다.

다음 PHP 스크립트가 있다고 가정합니다.

이 코드는 키릴 문자가 16진수 엔터티로 인코딩되는 다음 JSON 문자열을 출력합니다.

"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."

UTF-8 문자를 직접 출력하려면 JSON_UNESCAPED_UNICODE 옵션을 사용할 수 있습니다:

이렇게 하면 키릴 문자가 유니코드 코드 포인트를 사용하여 표현되는 다음 JSON 문자열이 생성됩니다.

"База данни грешка."
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3