JSON 이상한 특수 유니코드 문자 디코딩: 설명
JSON 인코딩 영역에서 "특수" 유니코드 문자가 때때로 이상하게 인코딩되어 나타날 수 있습니다. . 이 문서의 목적은 이러한 일반적인 문제를 명확히 하고 근본적인 원인을 탐색하는 것입니다.
이 현상이 발생하는 이유는 무엇입니까?
JSON 표준에서는 16진수 이스케이프 시퀀스를 포함하여 특수 문자를 다양한 방법으로 인코딩할 수 있습니다. . json_encode를 사용하여 유니코드 문자를 인코딩할 때 이러한 이스케이프 시퀀스를 선택하는 경우가 많습니다. 예를 들어, 인코딩된 JSON에서 한자 "말"은 "u99ac"로 출력됩니다.
이 동작은 오류가 아닙니다. 오히려 ECMAScript 표준에 설명된 JSON 구문을 따릅니다. Javascript에서는 16진수 이스케이프 시퀀스를 사용하여 문자열 리터럴을 작성하여 UTF-16 서로게이트 쌍의 문자를 포함한 모든 문자를 나타낼 수 있습니다.
유니코드 코드 포인트를 사용하면 모든 문자를 "u... ". 이 표기법은 둘 다 JSON 파서에 의해 동일한 엔터티로 해석되므로 리터럴 문자 자체와 완전히 동일합니다.
그러나 인코딩 시 JSON_UNESCAPED_UNICODE 플래그를 설정하여 리터럴 문자 인코딩을 선호하도록 json_encode를 구성할 수 있습니다. 이렇게 하면 결과가 더 읽기 쉬워지지만 데이터의 기본 의미는 변경되지 않습니다.
결론적으로 json_encode를 사용하여 JSON에서 유니코드 문자가 "이상하게" 인코딩되는 것은 잘못된 인코딩의 문제가 아닙니다. JSON 표준을 준수하는 완벽하게 유효한 방법입니다. 원하는 경우 JSON_UNESCAPED_UNICODE 플래그를 사용하여 리터럴 문자 인코딩을 활성화할 수 있습니다.
위 내용은 JSON의 일부 유니코드 문자가 이스케이프 시퀀스로 인코딩되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!