Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT]БД выставление кодировки 
V
    Опции темы
ecspertiza
Дата 3.3.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Вопрос вот в чём, можно ли кодировку проставить сразу при коннекте к базе данных, а не переводить каждый раз когда получаю данные из базы, БД в UTF-8 сам под виндой стало быть ср1251.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
ecspertiza
Дата 3.3.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



вот если делаю вот так то всё пучком

Код

QByteArray data = query.value(0).toByteArray();
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
Technica_description->setPlainText(codec->toUnicode(data));


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


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 3.3.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



какая база данных?

и чем тебе юникод не устраивает?

Это сообщение отредактировал(а) Elfebet - 3.3.2009, 10:39


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 3.3.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



База данных Firebird 2.1, меня то юникод устраивает, а вот когда загружаю данные в текстовое поле отображаются ежи, ну естественно данные добавляет тоже софт, может надо какието манипуляции проводить при добавлении текста на русском языке? 


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 3.3.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



http://kinterbasdb.sourceforge.net/dist_do...utorial_connect

типа такого
Код

self.connection = dbdriver.connect( 
                            dsn='c:\mydb.fdb', 
                            user='sysdba', 
                            password='123',
                            dialect=3,
                            charset='cp1251'  )




--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 3.3.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



если честно не совсем понимаю что ето)))


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 3.3.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



ну ты ж просил

Цитата(ecspertiza @  3.3.2009,  09:25 Найти цитируемый пост)
Вопрос вот в чём, можно ли кодировку проставить сразу при коннекте к базе данных


вот показую код как при коннекте поставить кодировку (код не проверял, так как firebird под рукой нэма)
Код

  QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE", "TestMyDB");
  db.setDatabaseName("D:\\Temp\\test.fdb");
  db.setUserName("TEST");
  db.setPassword("ABC");
  db.setConnectOptions("charset='cp1251'");



--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 3.3.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Пнятно, не так не работает, правильнее было бы

Код

db.setConnectOptions("ISC_DPB_LC_CTYPE=Windows-1251");
 

но ксажелению огнептица не знает такую кодировку(Windows-1251) и отваливается,

а если прописать

Код

db.setConnectOptions("ISC_DPB_LC_CTYPE=WIN1251");


то такую кодировку не знает QT и автоматом выставляет UNIKODE_FFS, баг тролей или огнептицы.

причём троли рекомендуют так

Код

db.setConnectOptions("ISC_DPB_LC_CTYPE=Latin1");


но при этом база открывается полностью пустая и невозможно добавление записей.

Это сообщение отредактировал(а) ecspertiza - 3.3.2009, 14:52


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
ecspertiza
Дата 3.3.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



 smile  smile  smile  Победил, правда не знаю хорошо это или плохо, кто знает наверника отпишите.

в main.cpp прописал

Код

    QTextCodec * myTextCodec = QTextCodec::codecForName("UTF-8");

    QTextCodec::setCodecForLocale( myTextCodec  );
    QTextCodec::setCodecForTr( myTextCodec );
    QTextCodec::setCodecForCStrings( myTextCodec );


всё же если найдутся какие нибудь решения выставить кодировку при конекте тоже отпишите.

Elfebet, спасибо за помошь)))

Это сообщение отредактировал(а) ecspertiza - 3.3.2009, 15:22


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 3.3.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



а огнептица знает такую кодировку как cp1251?


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 3.3.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



я пробовал с ней конектится, софт отваливается как при Windows-1251((((


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.