PHP 개발 중에, 데이터베이스에서 읽은 데이터가 읽히면 일반적으로 일관되지 않은 문자 인코딩 설정과 관련이 있습니다. 특히 중국 환경에서 일반적인 문제는 데이터베이스가 UTF-8 인코딩을 사용하지만 출력 할 때는 차량을 표시한다는 것입니다. 이 기사는 PHP에서 UTF8_Decode 함수를 사용하여 데이터베이스 출력에서 차량 코드 문제를 해결하는 방법에 중점을 둘 것입니다.
차량 코드의 근본 원인은 일반적으로 문자 인코딩에서 불일치입니다. 예를 들어:
데이터베이스는 UTF-8 인코딩의 데이터를 저장합니다
페이지 나 스크립트는 인코딩을 올바르게 설정하지 않으며 기본적으로 기본적으로 인코딩이 사용됩니다 (예 : ISO-8859-1)
데이터를 읽을 때 올바른 인코딩 변환이 수행되지 않았습니다
이상적인 솔루션은 다음과 같습니다.
데이터베이스 연결 중에 문자 인코딩이 올바른지 확인하십시오 (예 : UTF-8)
페이지 선언은 UTF-8 인코딩을 사용합니다 ( <meta charset = "utf-8"> )
읽기 및 출력시 일관된 인코딩 형식
그러나 일부 환경에서는 데이터가 이미 UTF-8 인코딩이지만 페이지가 NONUTF-8 인코딩을 사용하는 경우 UTF8_Decode 기능을 사용하여 UTF-8 문자열을 ISO-8859-1 인코딩으로 변환 할 수 있습니다.
UTF8_DECODE 기능의 기능은 UTF-8 인코딩 된 문자열을 ISO-8859-1 인코딩 된 문자열로 변환하는 것입니다. 그것의 정의는 다음과 같습니다.
string utf8_decode(string $data);
UTF8_DECODE는 ISO-8859-1 인코딩 범위 내에서만 문자를 변환 할 수 있으며 초과는 물음표로 변환됩니다 .
데이터베이스 콘텐츠가 UTF-8 인코딩이라고 가정하면 웹 페이지에서 ISO-8859-1 인코딩 (또는 다른 인코딩이 ISO-8859-1과 호환)을 사용한다고 가정하면 UTF8_Decode를 사용하여 출력을 처리 할 수 있습니다.
<?php
// 데이터베이스 연결
$mysqli = new mysqli("gitbox.net", "username", "password", "database");
// 연결 문자 인코딩을 설정하십시오utf8
$mysqli->set_charset("utf8");
// 쿼리 데이터
$result = $mysqli->query("SELECT content FROM articles WHERE id=1");
if ($row = $result->fetch_assoc()) {
// 웹 페이지 사용을 가정합니다ISO-8859-1코딩,필요합니다UTF-8변환ISO-8859-1
$content = utf8_decode($row['content']);
echo $content;
} else {
echo "데이터를 찾을 수 없습니다";
}
$mysqli->close();
?>
위 코드에서 :
데이터베이스에서 읽은 데이터가 $ mysqli-> set_charset ( "utf8")을 통해 UTF-8 형식인지 확인하십시오.
UTF-8 인코딩을 UTF8_DECODE를 사용하여 ISO-8859-1로 변환하십시오
ISO-8859-1을 사용하여 페이지가 인코딩되면 출력 데이터가 차단되지 않습니다.
웹 페이지 자체가 UTF-8 인코딩을 사용하는 경우 (대부분의 웹 페이지는 이제 다음과 같습니다), 일반적으로 UTF8_DECODE를 사용할 필요가 없으므로 한자가 해제됩니다.
인코딩 변환의 복잡성을 줄이기 위해 데이터베이스, PHP 스크립트 및 웹 페이지를 UTF-8로 통합하여 유지하십시오.
UTF8_DECODE는 ISO-8859-1 인코딩 환경과 호환되는 경우에만 사용됩니다.
UTF8_DECODE 기능은 UTF-8을 ISO-8859-1 인코딩으로 처리하기위한 간단한 도구이며 특정 환경에서 차량 코드 문제를 해결할 수 있습니다. 그러나 현대 개발은 UTF-8 인코딩을 균일하게 인코딩하여 여러 전환으로 인한 데이터 예외를 피할 것을 권장합니다. 코드 문제가 여전히 발생하는 경우 데이터베이스 연결 인코딩 및 웹 페이지 인코딩 모두 문제를 해결하는 것이 좋습니다.