Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ кодировка sqlite

Автор: 512es 23.4.2009, 17:38

всем привет!)

как известно sqlite поддерживает 2 кодировки..
UTF-8 и UTF-16

пытаюсь вывести данные из базы, которая была составлена с использованием UTF-8, через QSqlTableModel.
результат - все русские буквы квадратиками.

перегуглил весь инет в поисках решения. не нашёл..

манипуляции с QTextCodec ни к чему не привели.

хочется заставить qt открывать базу в режиме UTF-8..


есть идеи?)

Автор: Litkevich Yuriy 23.4.2009, 17:50

Цитата(512es @ 23.4.2009, 21:38) *
манипуляции с QTextCodec ни к чему не привели.
какие, например?

Автор: 512es 23.4.2009, 17:56

например такие:

QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);

пробовал разные кодировки..

Автор: Litkevich Yuriy 23.4.2009, 18:15

Цитата(512es @ 23.4.2009, 21:56) *
QTextCodec::setCodecForCStrings(codec);
эта поидее и должна работать. Проверь на демке Sqlbrowser (добавь в main эту строку.)

Автор: trdm 23.4.2009, 18:38

Сильно не разбирался в проблеме, но:
http://habrahabr.ru/blogs/sql/57915/
или
QSqlDatabase m_db = QSqlDatabase::addDatabase("QSQLITE");
m_db.exec("PRAGMA encoding = \"UTF-8\"");
http://www.sqlite.org/pragma.html

Автор: 512es 23.4.2009, 20:48

setCodecForCStrings попробовал все варианты. ничего не меняется. совсем. разве что при указании кодировки UTF-16 и 32 драйвер не загружается

Цитата
QSqlDatabase: ??? driver not loaded


на PRAGMA encoding вообще ноль реакции

мне кажется я знаю в чём проблема.. база была создана через API функцию sqlite3_open() и в неё писали обычные std::string строки. программа работала и не было заметно никаких глюков..
хочется конечно оставить совместимость со старой версией, но если это повлечёт за собой много сложностей, то лучше наверное конвертировать.. не знаю ещё, правда, как..

Автор: 512es 29.4.2009, 11:17

пришлось написать конвертер в UTF-16..
теперь работает всё без проблемм. но при переносе на чистую машину ничего не отображается в tableView.. может ещё какой дллки нехватает.. буду искать..

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)