使用PDO_ODBC 存取Access 資料庫時,非標準字元可能會傳回不正確的值。本文探討了根本問題,並提供了使用 COM 與 ADODB 連接和 Recordset 物件的全面解決方案。
PDO_ODBC 本身不處理 UTF -8 用於從 Access 資料庫擷取文字的編碼。這會導致實際字元編碼與瀏覽器或 PHP 假定的編碼不符。因此,非標準字元會出現亂碼或顯示不正確。
解決此問題的一些嘗試包括將傳回的文字轉換為 UTF- 8 使用 utf8_encode() 或 mb_convert_encoding() 等函數。雖然這些可以解決某些字元集(如 Windows-1252)的問題,但它們並不能完全解決所有 Unicode 字元的問題。
為了獲得完整的 UTF-8 支持,建議將 COM 與 ADODB Connection 和 Recordset 物件一起使用。以下是如何實現此解決方案:
<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中文網其他相關文章!