Непонятки с ODBC и юникодом

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Непонятки с ODBC и юникодом

Сообщение ArtDen » 21 фев 2009, 11:36

Проблема следующая. Подключаюсь к ODBC-драйверу, без указания кодировки в строке подключения. Далее после всяких инициализаций вызываю функцию SQLExecDirectW, в которую в качестве sql-запроса передаю запрос, содержащий русские буквы в текстовых параметрах (естественно, сам запрос состоит из двубайтовых символов wchar_t). На такой запрос драйвер отвечает ошибкой:
[ODBC Firebird Driver][Firebird]Malformed string
Если русские символы в запросе не содержатся, то запрос отрабатывает нормально. Что самое интересное, возврат результата запроса, содержащего русские буквы, проходит без проблем.

Почему при вызове SQLExecDirectW ODBC-драйвер не перетранслирует двухбайтный юникод в кодировку базы данных?

PS: если при подключении указать кодировку WIN1251, то всё работает (хотя не понятно почему это работает).

WinXP RUS SP3
ODBC-драйвер 2.0.0.148
Firebird 2.1.1.17910-0
База данных в кодировке utf8

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Re: Непонятки с ODBC и юникодом

Сообщение ArtDen » 21 фев 2009, 12:43

Если в строке подключения указать
CHARSET=UNICODE_FSS;
то тоже работает. Только правильно ли это?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Непонятки с ODBC и юникодом

Сообщение kdv » 21 фев 2009, 15:57

Почему при вызове SQLExecDirectW ODBC-драйвер не перетранслирует двухбайтный юникод в кодировку базы данных?
потому что драйвер и не обязан транслировать, кроме того, юникод юникоду рознь.
www.ibase.ru/unicode_faq.htm

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Re: Непонятки с ODBC и юникодом

Сообщение ArtDen » 21 фев 2009, 16:46

kdv писал(а): потому что драйвер и не обязан транслировать, кроме того, юникод юникоду рознь.
А как тогда правильно?
Not Found
The requested URL /unicode_faq.htm was not found on this server.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Re: Непонятки с ODBC и юникодом

Сообщение Attid » 22 фев 2009, 11:01

там букавку потерялась http://www.ibase.ru/unicode_faq.html

Ответить