"특수" 유니코드 문자를 통합할 때 JSON으로 인코딩된 후 왜곡되어 나타나는 경우가 많습니다.
echo json_encode(['foo' => '馬']); // Output: {"foo":"\u99ac"}
이런 일이 발생하는 이유를 이해하는 것은 중요합니다.
JSON 인코딩 표준
JSON 인코딩은 ECMAScript(이전의 JavaScript) 문자열 리터럴 형식(섹션 7.8.4)을 활용합니다. 문자를 "u" 접두사가 붙은 16진수 숫자로 표시하고 그 뒤에 코드 포인트를 나타내는 4개의 16진수 숫자를 표시할 수 있습니다.
"\u99ac"
이 표현은 문자열 리터럴 "말"과 동일하며 동일한 유니코드를 전달합니다. 호환 JSON 파서로 구문 분석할 때의 문자입니다.
PHP의 JSON 인코딩 기본 설정
PHP의 json_encode 함수는 "u...." 이스케이프 시퀀스를 사용하여 ASCII가 아닌 문자를 인코딩하는 경우가 많습니다. 이는 선택 사항이지만 유효한 JSON을 생성합니다.
인코딩 사용자 정의
원하는 경우 PHP 5.4에 도입된 JSON_UNESCAPED_UNICODE 플래그는 리터럴 문자 인코딩을 허용합니다.
echo json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE); // Output: {"foo":"馬"}
이 커스터마이징은 필수라기보다는 선호사항이라는 점을 기억하는 것이 중요합니다. JSON으로 유니코드 문자를 전송합니다.
위 내용은 JSON 인코딩 후 특수 유니코드 문자가 왜곡되어 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!