0

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

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

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

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

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

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

4

1 回答 1

0

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

于 2010-06-03T20:36:08.103 回答