PDO_ODBC を使用して Access データベースにアクセスすると、標準以外の文字が不正な値を返す場合があります。この記事では、根本的な問題を調査し、COM と ADODB 接続オブジェクトおよび Recordset オブジェクトを使用する包括的な解決策を提供します。
PDO_ODBC は UTF をネイティブに処理しませんAccess データベースから取得したテキストの -8 エンコード。これにより、実際の文字エンコーディングとブラウザまたは PHP が想定するエンコーディングとの間に不一致が発生します。その結果、標準以外の文字が文字化けするか、正しく表示されません。
この問題を修正する試みには、返されたテキストを UTF に変換することが含まれます。 8 utf8_encode() や mb_convert_encoding() などの関数を使用します。これらは Windows-1252 などの特定の文字セットの問題を解決する可能性がありますが、すべての Unicode 文字の問題を完全に解決するわけではありません。
UTF-8 を完全にサポートするには、ADODB Connection および Recordset オブジェクトとともに COM を使用することをお勧めします。このソリューションを実装する方法は次のとおりです。
<code class="php">// Connect to the database using ADODB with UTF-8 encoding $con = new COM("ADODB.Connection", NULL, CP_UTF8); $con->Open($connStr); // Open a Recordset and execute the query $rst = new COM("ADODB.Recordset"); $sql = "SELECT Team FROM Teams"; $rst->Open($sql, $con, 3, 3); // adOpenStatic, adLockOptimistic // Iterate through the Recordset and retrieve the characters while (!$rst->EOF) { $s = $rst->Fields("Team"); echo $s . "<br/>\n"; $rst->MoveNext(); } // Close the Recordset and connection $rst->Close(); $con->Close();</code>
このアプローチを使用すると、すべての文字が UTF-8 として正しくエンコードされ、適切に表示されます。
以上がPDO ODBC 経由で Access データベースから UTF-8 アクセント付き文字の取得を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。