Есть сервер БД. Есть к нему драйвер 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 отдавать результаты и отсылать запросы в нужной кодировке? Другие варианты?