>  기사  >  백엔드 개발  >  PDO_ODBC를 통해 액세스에서 UTF-8 악센트 ​​문자를 검색하는 방법은 무엇입니까?

PDO_ODBC를 통해 액세스에서 UTF-8 악센트 ​​문자를 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-20 17:50:02512검색

How to Retrieve UTF-8 Accented Characters from Access via PDO_ODBC?

PDO_ODBC를 통해 액세스에서 UTF-8 악센트 ​​문자를 검색할 수 없습니다.

문제

PDO_ODBC 및 기본 PHP ODBC 기능은 그렇지 않은 텍스트를 반환합니다. Access 데이터베이스에 저장되는 방식에 관계없이 UTF-8로 인코딩됩니다. 이로 인해 웹 페이지에 데이터를 표시하거나 UTF-8 입력이 필요한 다른 PHP 함수를 사용할 때 문제가 발생할 수 있습니다.

불완전한 수정

이 문제를 해결하는 한 가지 방법은 utf8_encode()를 사용하는 것입니다. 반환된 텍스트를 UTF-8로 변환하는 함수입니다. 그러나 이는 ISO-8859-1로 인코딩된 문자에만 적용됩니다. Windows-1252와 같은 다른 인코딩으로 인코딩된 문자의 경우 이 방법이 작동하지 않습니다.

보다 포괄적인 해결 방법은 mb_convert_encoding() 함수를 사용하여 반환된 텍스트를 UTF-8로 변환하는 것입니다. 이 기능은 Windows-1252를 포함하여 더 넓은 범위의 인코딩을 처리할 수 있습니다. 그러나 데이터베이스에 유니코드로 저장되지 않은 문자 문제는 여전히 해결되지 않습니다.

완전한 수정

문제를 완전히 해결하려면 ADODB 연결 및 레코드 집합 개체가 있는 COM이 있어야 합니다. 사용됩니다. 이러한 객체는 UTF-8 코드 페이지의 명시적 사양을 허용합니다. CP_UTF8 옵션으로 연결 및 레코드세트를 열면 데이터베이스에서 검색된 모든 데이터는 저장 방법에 관계없이 자동으로 UTF-8로 변환됩니다.

예제 코드

다음은 ADODB에서 전체 수정 사항을 사용하는 방법을 보여주는 예제 코드 조각:

<code class="php"><?php
header('Content-Type: text/html; charset=utf-8');
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Access character test</title>
</head>
<body>
<?php
$connStr = 
        'Driver={Microsoft Access Driver (*.mdb)};' .
        'Dbq=C:\Users\Public\__SO\28311687.mdb';
$con = new COM("ADODB.Connection", NULL, CP_UTF8);  // specify UTF-8 code page
$con->Open($connStr);

$rst = new COM("ADODB.Recordset");
$sql = "SELECT Team FROM Teams";
$rst->Open($sql, $con, 3, 3);  // adOpenStatic, adLockOptimistic
while (!$rst->EOF) {
    $s = $rst->Fields("Team");
    echo $s . "<br />\n";
    $rst->MoveNext;
}
$rst->Close();
$con->Close();
?>
</body>
</html></code>

위 내용은 PDO_ODBC를 통해 액세스에서 UTF-8 악센트 ​​문자를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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