"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > json_encode()가 Latin1 인코딩을 사용하는 MySQL 데이터베이스의 악센트 문자를 인코딩하지 못하는 이유는 무엇입니까?

json_encode()가 Latin1 인코딩을 사용하는 MySQL 데이터베이스의 악센트 문자를 인코딩하지 못하는 이유는 무엇입니까?

2024-11-07에 게시됨
검색:946

Why Does json_encode() Fail To Encode Accented Characters From a MySQL Database with Latin1 Encoding?

MySQL에서 UTF-8 문자로 인한 JSON 인코딩 문제

latin1_swedish_ci 인코딩을 사용하는 데이터베이스에서 악센트 부호 문자를 검색하고 json_encode()를 사용하여 JSON으로 인코딩하려고 할 때, 결과는 예상치 못한 것일 수 있습니다. "Abord â Plouffe"와 같은 의도한 결과가 "null"로 변환되어 인코딩된 JSON이 유효하지 않게 렌더링됩니다.

이 문제를 해결하려면 검색된 값을 명시적으로 UTF-8로 인코딩해야 합니다. json_encode()를 적용합니다. 이렇게 하면 JSON 출력에 올바른 UTF-8 문자가 포함되고 이에 따라 유효성이 검사됩니다. 이 솔루션을 구현하는 방법은 다음과 같습니다.

// Initialize an empty array for the encoded result set
$rows = array();

// Iterate over the PHPMyAdmin result set
while ($row = mysql_fetch_assoc($result)) {
  // Apply UTF-8 encoding to each row value
  $rows[] = array_map('utf8_encode', $row);
}

// Output the encoded $rows
echo json_encode($rows);

이 수정된 코드에서는 array_map 함수를 활용하여 결과 집합에 있는 모든 행의 각 요소에 utf8_encode를 적용합니다. 이렇게 하면 json_encode가 실행되기 전에 모든 문자가 UTF-8로 올바르게 인코딩됩니다. 결과적으로 결과 JSON 출력은 의도한 문자를 정확하게 반영하고 원하는 대로 악센트 문자를 유지합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3