Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Pengambilan Aksara Beraksen UTF-8 daripada Pangkalan Data Akses melalui PDO ODBC?

Bagaimana untuk Mengendalikan Pengambilan Aksara Beraksen UTF-8 daripada Pangkalan Data Akses melalui PDO ODBC?

DDD
DDDasal
2024-10-20 17:53:31475semak imbas

How to Handle UTF-8 Accented Character Retrieval from Access Database via PDO ODBC?

Tidak Dapat Mendapatkan UTF-8 Aksara Beraksen daripada Akses melalui PDO_ODBC



/h2>

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.

Masalah dengan PDO_ODBC

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.

Pembetulan Tidak Lengkap

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.

Pembetulan Lengkap Menggunakan ADODB

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn