crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> кодировка sqlite, как известно sqlite поддерживает 2 кодировки..
512es
  опции профиля:
сообщение 23.4.2009, 17:38
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


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

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

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

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

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

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


есть идеи?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.4.2009, 17:50
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(512es @ 23.4.2009, 21:38) *
манипуляции с QTextCodec ни к чему не привели.
какие, например?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 23.4.2009, 17:56
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


например такие:
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);

пробовал разные кодировки..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.4.2009, 18:15
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(512es @ 23.4.2009, 21:56) *
QTextCodec::setCodecForCStrings(codec);
эта поидее и должна работать. Проверь на демке Sqlbrowser (добавь в main эту строку.)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 23.4.2009, 18:38
Сообщение #5


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Сильно не разбирался в проблеме, но:
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

Сообщение отредактировал trdm - 23.4.2009, 18:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 23.4.2009, 20:48
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


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


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

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

Сообщение отредактировал 512es - 24.4.2009, 6:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 29.4.2009, 11:17
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.12.2024, 20:30