Russian Qt Forum

Qt => Базы данных => Тема начата: Maxz от Сентябрь 15, 2009, 11:20



Название: [РЕШЕНО] Как сделать перекодировку?
Отправлено: Maxz от Сентябрь 15, 2009, 11:20
Qt 4.5.0 Open Source for Windows

Искал на форуме, но не нашел, посему если тема была - ткните в нее.

Соединяюсь через ODBC с БД (БД - разные, MS SQL, Oracle, PostgreSQL и др. - поэтому используется ODBC), вывожу данные (здесь пример упрощен):

Код:
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT FIELDS FROM TABLES");
tableView=new QTableView;      
tableView->setModel(model);

Проблема такая - данные в базах храняться в разных кодировках, а вывод в QTableView делается в юникоде, т.е. кракозябриками. Конечно, можно было бы прогонять каждуй строку и перекодировать необходимые поля, но, думаю, есть более простое решение.
Вопрос - как мне заставить QTableView делать перекодировку? (кодировка каждой базы будет храниться рядом в настройках).

Заранее спасибо всем ответившим.


Название: Re: Как сделать перекодировку?
Отправлено: lit-uriy от Сентябрь 15, 2009, 12:02
Попробуй в функции main, сразу после создания объекта QApplication такую строчку написать:
Код
C++ (Qt)
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());


Название: Re: Как сделать перекодировку?
Отправлено: Maxz от Сентябрь 15, 2009, 12:12
to lit-uriy

СПАСИБО!!! - это оно самое.
Тема, думаю, закрыта