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 중국어 웹사이트의 기타 관련 기사를 참조하세요!