>백엔드 개발 >PHP 튜토리얼 >일부 유니코드 문자가 JSON에서 `\u....` 시퀀스로 나타나는 이유는 무엇입니까?

일부 유니코드 문자가 JSON에서 `\u....` 시퀀스로 나타나는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-19 19:30:11969검색

Why Do Some Unicode Characters Appear as `u....` Sequences in JSON?

"특수" 유니코드 문자가 u....로 인코딩되어 나타나는 이유

PHP를 사용하여 "특수" 유니코드 문자를 인코딩하는 경우 json_encode 함수에서는 "u"라는 접두사가 붙은 익숙하지 않은 문자열 리터럴로 나타나는 경우가 많습니다. 이 동작은 JSON의 문자 인코딩 메커니즘에 내재되어 있으며 인코딩 오류를 나타내지 않습니다.

JSON을 사용하면 문자를 u... 이스케이프 시퀀스로 표현할 수 있습니다. 여기서 ....는 문자의 유니코드 코드 포인트를 나타냅니다. . 이는 ECMAScript(JavaScript)의 문자열 리터럴이 구성되는 방식과 동일합니다.

예를 들어 문자 "말"은 JSON에서 "말" 또는 "u99ac"로 표시될 수 있습니다. 두 리터럴 모두 동일한 문자를 나타내며 동일하게 유효합니다. 호환되는 JSON 파서로 구문 분석하면 둘 다 동일한 문자열이 생성됩니다.

기본적으로 PHP의 json_encode는 ASCII가 아닌 문자에 대해 u.... 이스케이프 시퀀스를 선호합니다. 그러나 PHP 5.4 이상에서는 JSON_UNESCAPED_UNICODE 플래그를 지정하여 이 기본 설정을 재정의할 수 있습니다. 이렇게 하면 이스케이프 시퀀스 대신 리터럴 문자가 포함된 JSON 출력이 생성됩니다.

json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE); // Output: {"foo":"馬"}

JSON_UNESCAPED_UNICODE를 지정하는 것은 개인 취향이며 JSON에서 유니코드 문자를 전송하기 위한 요구 사항이 아니라는 점에 유의하는 것이 중요합니다. 이스케이프 시퀀스와 리터럴 문자는 모두 JSON 표현에서 동일하게 유효합니다.

위 내용은 일부 유니코드 문자가 JSON에서 `u....` 시퀀스로 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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