>백엔드 개발 >PHP 튜토리얼 >데이터 손실 없이 PHP에서 유니코드 문자가 포함된 JSON 문자열을 어떻게 디코딩하고 인코딩할 수 있나요?

데이터 손실 없이 PHP에서 유니코드 문자가 포함된 JSON 문자열을 어떻게 디코딩하고 인코딩할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 08:14:011054검색

How can I decode and encode JSON strings containing Unicode characters in PHP without losing data?

PHP에서 유니코드 문자를 사용하여 JSON 인코딩 및 디코딩 풀기

JSON 처리 영역에서 문자 인코딩 및 디코딩은 특히 다음과 같은 특수 문자를 처리할 때 문제가 되는 경우가 많습니다. 유니코드로 된 것. 유니코드 문자가 포함된 JSON 문자열을 디코딩하는 데 실패하여 개발자가 당황할 수 있습니다.

유니코드 디코딩의 수수께끼

PHP를 사용하여 유니코드 문자가 포함된 JSON 문자열을 디코딩하려고 할 때 json_decode 함수를 사용하면 실패하여 문자가 엉망이 될 수 있습니다. 모든 유니코드 문자를 허용하는 JSON 사양에도 불구하고 이 동작은 불만의 원인입니다.

유니코드 문자 이스케이프 및 이스케이프 해제

이 문제를 해결하려면 다음 중 하나를 수행하세요. PHP의 utf8_encode 기능을 활용하여 디코딩을 허용할 수 있습니다. 그러나 수정된 ​​배열을 다시 인코딩하면 유니코드 문자가 ASCII로 이스케이프됩니다. 이는 JSON 사양을 따르지만 바람직하지 않을 수 있습니다.

A 솔루션: JSON_UNESCAPED_UNICODE 옵션

PHP 버전 5.4에는 json_encode에 대한 JSON_UNESCAPED_UNICODE 옵션이 도입되었습니다. 이 옵션은 유니코드 문자가 이스케이프되는 것을 방지합니다. 그러나 5.4 이하 버전의 경우 정규식을 사용하여 유니코드 문자를 수동으로 이스케이프 해제하는 것이 해결책입니다.

JSON_UNESCAPED_UNICODE 및 JSON_UNESCAPED_SLASHES

를 사용한 향상된 인코딩 이 인코딩 및 디코딩 문제에 대한 해결책은 json_encode 함수에서 JSON_UNESCAPED_UNICODE 및 JSON_UNESCAPED_SLASHES 옵션을 모두 사용하는 것입니다. 이 조합을 사용하면 유니코드 문자가 이스케이프되지 않고 슬래시도 이스케이프 시퀀스가 ​​아닌 문자로 처리됩니다.

아래 제공된 코드 조각을 사용하면 문제를 우아하게 해결할 수 있습니다.

<code class="php">json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);</code>

이 솔루션을 채택하면 잘못된 출력에 대한 걱정 없이 유니코드 문자가 포함된 JSON 문자열을 자신 있게 디코딩하고 인코딩할 수 있습니다.

위 내용은 데이터 손실 없이 PHP에서 유니코드 문자가 포함된 JSON 문자열을 어떻게 디코딩하고 인코딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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