Beim Zugriff auf eine Access-Datenbank mit PDO_ODBC können nicht standardmäßige Zeichen falsche Werte zurückgeben. Dieser Artikel untersucht das zugrunde liegende Problem und bietet eine umfassende Lösung unter Verwendung von COM mit ADODB-Verbindungs- und Recordset-Objekten.
PDO_ODBC verarbeitet UTF nicht nativ -8-Kodierung für Text, der aus einer Access-Datenbank abgerufen wird. Dies führt zu einer Diskrepanz zwischen der tatsächlichen Zeichenkodierung und der vom Browser oder PHP angenommenen Kodierung. Infolgedessen werden nicht standardmäßige Zeichen verstümmelt oder falsch angezeigt.
Einige Versuche, das Problem zu beheben, beinhalten die Konvertierung des zurückgegebenen Textes in UTF- 8 mit Funktionen wie utf8_encode() oder mb_convert_encoding(). Diese können zwar Probleme mit bestimmten Zeichensätzen wie Windows-1252 beheben, lösen das Problem jedoch nicht vollständig für alle Unicode-Zeichen.
Für eine vollständige UTF-8-Unterstützung wird empfohlen, COM mit ADODB-Verbindungs- und Recordset-Objekten zu verwenden. So implementieren Sie diese Lösung:
<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>
Mit diesem Ansatz werden alle Zeichen korrekt als UTF-8 codiert und ordnungsgemäß angezeigt.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit dem Abrufen von Zeichen mit UTF-8-Akzent aus der Access-Datenbank über PDO ODBC um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!