>  기사  >  백엔드 개발  >  PHP의 특정 대륙 코드에서 `json_encode()`가 실패하는 이유는 무엇입니까?

PHP의 특정 대륙 코드에서 `json_encode()`가 실패하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 23:22:30865검색

Why Does `json_encode()` Fail with Specific Continent Codes in PHP?

PHP 배열의 JSON 인코딩 문제

질문:

PHP의 json_encode( ) 함수를 사용하여 MySQL 테이블 데이터를 JSON으로 변환했지만 이상한 동작이 발생했습니다. 이 함수는 특정 쿼리, 특히 특수 문자나 특정 대륙 코드가 포함된 쿼리에 대한 데이터를 인코딩하지 않습니다.

코드 조각:

<code class="php">$result = mysqli_query($con, "SELECT * FROM countries WHERE continent_code='EU'") or die(mysqli_error($con));

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $orders[] = array(
        'CountryCode' => $row['code'],
        'CountryName' => $row['name']
    );
}

echo json_encode($orders);</code>

관찰:

  • 코드는 대륙 코드 'AS'에 대해 데이터를 올바르게 인코딩합니다.
  • 대륙 코드 'EU', 'NA', 'AF' 및 기타 코드는 JSON을 생성하지 않습니다.

문제:

json_encode() 함수를 사용하려면 들어오는 모든 데이터가 UTF-8로 인코딩되어야 합니다. 특수 문자 및 특정 대륙 코드는 데이터베이스에서 또는 데이터 조작 중에 제대로 인코딩되지 않을 수 있습니다.

해결책:

웹 애플리케이션 전체에서 UTF-8 인코딩을 확인하세요. 여기에는 다음이 포함됩니다.

  • UTF-8을 사용하도록 데이터베이스 연결 설정(예: mysqli_set_charset($con, 'UTF-8'))
  • JSON 응답에 대한 헤더 선언( header('Content-Type: application/json; charset=utf-8');)
  • PHP 파일과 데이터베이스가 UTF-8 인코딩을 사용하고 있는지 확인(예: 파일 인코딩 또는 데이터베이스 구성을 통해)

RFC4627에 따르면 "JSON 텍스트는 유니코드로 인코딩되어야 합니다. 기본 인코딩은 UTF-8입니다." UTF-8 인코딩을 보장함으로써 json_encode()는 내용에 관계없이 모든 데이터를 올바르게 처리할 수 있습니다.

위 내용은 PHP의 특정 대륙 코드에서 `json_encode()`가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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