Чтение данных Unicode из DB2 через ADO и ODBC - PullRequest
0 голосов
/ 02 декабря 2009

Из моего приложения, написанного на Delphi 2009, я читаю и записываю в базу данных IBM DB2, используя ADO, ODBC-провайдера для ADO и ODBC:

Приложение -> ADO (Win32) -> ODBC-провайдер для ADO -> ODBC -> (net) -> DB2 (Windows)

Теперь мое приложение должно хранить данные в кодировке Unicode. Поэтому я установил кодовую страницу своей базы данных в UTF-8. Delphi внутренне обрабатывает строки в UTF-16 и передает их в виде многобайтовых символов в COM. Так что у меня должно быть все в порядке с кодировкой на стороне приложения.

Вставка non-ansi-chars в поле VARCHAR db работает нормально, они корректно отображаются в консоли управления DB2 (которая является Java-приложением, использующим, как я полагал, JDBC). В моем приложении (или любом другом написанном мной тестовом приложении, использующем запросы ADO), я получаю только последовательность байтов # $ 1A для полей VARCHAR с символами Юникода в них.

Странно, но это же приложение работает нормально, если бэкэнд является базой данных Microsoft SQL. Извлечение ANSI-совместимых символьных строк также не является проблемой для DB2.

В документации DB2 говорится, что драйверы ODBC DB2 отвечают символами Unicode, если приложение вызывает API ODBC суффикса-W. Возможно ли, что при определенных обстоятельствах поставщик ODBC для ADO не запускает эти функции, а вместо этого использует функции ANSI? Я попытался установить клиентскую кодовую страницу в строке подключения ADO и настройки драйвера ODBC безуспешно, хотя мог бы сделать это неправильно wav.

1 Ответ

0 голосов
/ 04 июня 2010

У меня была похожая проблема. Я добавил DISABLEUNICODE=0 к моей строке подключения, и он разрешил ее для меня.

...