>  기사  >  백엔드 개발  >  `json_encode()`가 작은따옴표가 있는 속성에 대해 null 값을 반환하는 이유는 무엇입니까?

`json_encode()`가 작은따옴표가 있는 속성에 대해 null 값을 반환하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 00:04:29542검색

Why is `json_encode()` returning null values for properties with single quotes?

JSON 인코딩 실패: 작은따옴표로 인한 불일치 해결

개발자는 PHP의 json_encode() 함수를 사용하여 객체를 인코딩하려고 할 때 소리 없는 실패를 자주 경험합니다. 이 맥락에서 사용자는 stdClass 객체를 인코딩하면 작은따옴표가 포함된 속성에 대해 null 값이 발생하는 문제에 직면했습니다.

분석

문제를 조사한 결과, 근본적인 원인은 json_encode()가 ASCII 범위 밖의 문자를 올바르게 처리할 수 없다는 점을 발견했습니다. 특히 16진수 덤프에서 x92로 표현되는 작은따옴표 문자가 문제였습니다.

해결 방법

이 문제를 해결하려면 데이터가 인코딩됨은 UTF-8로 올바르게 인코딩됩니다. 이는 사용된 API에 따라 MySQL 연결 인코딩을 적절하게 설정함으로써 달성할 수 있습니다:

  • 이전(더 이상 사용되지 않음) API: mysql_set_charset("utf8")
  • mysqli: mysqli_set_charset("utf8")
  • PDO: 연결 문자열에 charset 매개변수를 추가하거나 PHP 5.3.6 이하를 사용하는 경우 SET NAMES utf8을 실행하세요. .

대체 접근 방식

대체 솔루션은 utf8_decode()를 사용하여 텍스트를 올바르게 인코딩된 형식으로 변환하는 것입니다. 그러나 텍스트가 ISO-8859-1로 인코딩된 것으로 가정하므로 항상 원하는 결과를 얻지 못할 수도 있습니다.

위 내용은 `json_encode()`가 작은따옴표가 있는 속성에 대해 null 값을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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