【问题标题】:Reading Unicode data from DB2 via ADO and ODBC通过 ADO 和 ODBC 从 DB2 读取 Unicode 数据
【发布时间】:2010-12-22 09:14:51
【问题描述】:

在我使用 Delphi 2009 编写的应用程序中,我正在使用 ADO、ADO 的 ODBC 提供程序和 ODBC 读取和写入 IBM DB2 数据库:

应用程序 -> ADO (Win32) -> ADO 的 ODBC 提供程序 -> ODBC -> (net) -> DB2 (Windows)

现在,我的应用程序需要存储 unicode 数据。所以我将我的数据库代码页设置为 UTF-8。 Delphi 在内部处理 UTF-16 字符串,并将它们作为多字节字符传递给 COM。所以我应该在应用程序端进行编码。

在 VARCHAR db 字段中插入非 ansi 字符可以正常工作,它们可以由 DB2 管理控制台正确显示(我认为这是一个使用 JDBC 的 Java 应用程序)。在我的应用程序(或我编写的任何其他使用 ADO 查询的测试应用程序)中,对于 VARCHAR 字段,我只获得了一个包含 unicode 字符的 #$1A 字节序列。

奇怪的是,如果后端是 Microsoft SQL 数据库,同样的应用程序也能正常工作。检索符合 ANSI 的字符串对 DB2 来说也不是问题。

在 DB2 文档中,它说如果应用程序调用后缀为 W 的 ODBC API,DB2 ODBC 驱动程序会使用 unicode 字符进行响应。在某些情况下,ADO 的 ODBC 提供程序是否可能不会触发这些函数,而是使用 ANSI 函数?我尝试在 ADO 连接字符串和 ODBC 驱动程序设置中设置客户端代码页,但没有成功,尽管我可能做错了 wav。

【问题讨论】:

    标签: delphi winapi odbc db2 adodb


    【解决方案1】:

    我遇到了类似的问题。我已将DISABLEUNICODE=0 添加到我的连接字符串中,它为我解决了问题。

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 2012-04-02
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多