尝试使用 PHP ODBC(特别是通过 PDO_ODBC)从 Access 数据库检索数据时,非标准字符可能无法正确导入,并可能导致诸如在特殊字符处显示问号等问题。
该问题源于 Access ODBC 驱动程序不支持以下事实:以 UTF-8 格式传输数据,即使数据库可能以 Unicode 存储数据。因此,当 ODBC 驱动程序返回文本时,它会以非标准格式(通常是 Windows-1252)进行编码。此编码与 UTF-8 不完全兼容,导致浏览器和 PHP 中出现显示问题。
解决该问题的一些常见尝试包括使用 mb_convert_encoding() 从 Windows 进行转换-1252 转 UTF-8。然而,这种方法并不能完全解决问题,因为 Windows-1252 之外的字符仍然可能被错误表示。
要完全解决问题并有效处理 UTF-8 数据,有必要将 COM 与 ADODB Connection 和 Recordset 对象一起使用。 COM(组件对象模型)和 ADODB(ActiveX 数据对象)支持与 Access 数据库直接交互,并允许正确处理 UTF-8 数据。
通过创建 COM 对象并将代码页设置为 UTF- 8.使用CP_UTF8,可以用正确的语言编码建立数据库连接。然后,ADODB Recordset 对象可用于从数据库检索数据,确保字符保持原始格式并在浏览器和 PHP 中正确显示。
以上是如何使用 PDO_ODBC 从 Access 中正确检索 UTF-8 重音字符?的详细内容。更多信息请关注PHP中文网其他相关文章!