Russian Qt Forum
Ноябрь 23, 2024, 18:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QODBC, кодировка получаемых строк  (Прочитано 3552 раз)
Deiv
Гость
« : Декабрь 28, 2007, 15:53 »

Есть сервер БД. Есть к нему драйвер ODBC.
В настройках драйвера ODBC есть возможность выставить кодировки в которой хранится база, в которой хочешь получать ответ на запрос и отсылать сам запрос. Пока пришел к мнению, что косячит драйвер - эти настройки в нем не действуют.
Чтобы получить данные в читаемом виде приходится выполнять такую процедуру:

Цитировать
    QTextCodec *codec = QTextCodec::codecForName("CP866");
    QSqlQuery q;
    if (!q.exec("select nmbr, var_name, help from defaults;")) {
       qDebug() << "   error #: " << qr.lastError().number();
       qDebug() << "descr (db): " << qr.lastError().databaseText();
       qDebug() << "descr (qt): " << qr.lastError().driverText();
       return 1;
    }
    while (qr.next()) {
       qDebug() << "nmbr: " << qr.value(0) << "variable: " << qr.value(1) << "=" << codec->toUnicode(qr.value(2).toByteArray());
    }

Драйвер закрытый. Срок поддержки давно истек.
Мы не работали с ODBC версией, потому вопросов не возникало.

Можно ли, малой кровью, научить qt отдавать результаты и отсылать запросы в нужной кодировке? Другие варианты?
Записан
WW
Гость
« Ответ #1 : Декабрь 28, 2007, 16:21 »

Что за сервер? Что за драйвер?
Тут все телепаты в отпуск на НГ ушли...
Записан
Deiv
Гость
« Ответ #2 : Декабрь 28, 2007, 16:40 »

Что за сервер? Что за драйвер?
Тут все телепаты в отпуск на НГ ушли...
сервер: Informix
клиент:
IBM/Informix-Client SDK Version 2.81.UC3
IBM/Informix ODBC LIBRARY Version 3.82.0000.UC3
Copyright (C) 1991-2003 IBM

А какое отношение сервер и драйвер имеет к моему вопросу?
Я ведь про "подкрутить Qt" спрашиваю?
Записан
WW
Гость
« Ответ #3 : Декабрь 28, 2007, 16:56 »

Qt просто принимает то, что отдает сервер. Если сервер поддерживает перекодировки под клиента - надо указать на это ему. Если нет - то тут только конвертить самому.
А судя по коду, сервер отдает Вам данные в досовской кодировке, а в Qt все стороки в юникоде.
Покопайтесь в SDK драйвера, манах сервера. дело решается там.
Поищите на бимеровских сайтах. там у них много инфы есть, надо только найти.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 21.