Apabila mengakses pangkalan data Access menggunakan PDO_ODBC, aksara bukan standard mungkin mengembalikan nilai yang salah. Artikel ini meneroka isu asas dan menyediakan penyelesaian komprehensif menggunakan COM dengan sambungan ADODB dan objek Recordset.
PDO_ODBC tidak mengendalikan UTF secara asli -8 pengekodan untuk teks yang diambil daripada pangkalan data Access. Ini menyebabkan ketidakpadanan antara pengekodan aksara sebenar dan pengekodan yang diandaikan oleh penyemak imbas atau PHP. Akibatnya, aksara bukan standard bercelaru atau dipaparkan secara tidak betul.
Sesetengah percubaan untuk membetulkan isu melibatkan penukaran teks yang dikembalikan kepada UTF- 8 menggunakan fungsi seperti utf8_encode() atau mb_convert_encoding(). Walaupun ini boleh menyelesaikan isu dengan set aksara tertentu seperti Windows-1252, ia tidak menangani sepenuhnya masalah untuk semua aksara Unikod.
Untuk sokongan UTF-8 yang lengkap, disyorkan untuk menggunakan COM dengan objek Sambungan ADODB dan Recordset. Begini cara untuk melaksanakan penyelesaian ini:
<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>
Dengan menggunakan pendekatan ini, semua aksara akan dikodkan dengan betul sebagai UTF-8 dan dipaparkan dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pengambilan Aksara Beraksen UTF-8 daripada Pangkalan Data Akses melalui PDO ODBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!