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

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

Barbara Streisand
Barbara Streisand원래의
2024-10-30 11:55:02336검색

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 문자가 포함되고 이에 따라 유효성이 검사됩니다. 이 솔루션을 구현하는 방법은 다음과 같습니다.

<code class="php">// 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);</code>

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

위 내용은 json_encode()가 Latin1 인코딩을 사용하는 MySQL 데이터베이스의 악센트 문자를 인코딩하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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