crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Qt, Interbase и ODBC, работа с БД Interbase
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 14:30
Сообщение #11


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

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

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




Репутация:   94  


например, писать код в UTF-8, можно в лине и в виндовозе - кодировка универсальная,
А попалась ранее созданая БД с кодировкой Win1251, не переделывать же из-за нее прогу
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 14:35
Сообщение #12


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Так сделай кодировку настраиваемой. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 14:42
Сообщение #13


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

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

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




Репутация:   94  


как? и где?

--
у меня пока в голове вертится такая мысль:
создать свою модель, а вней делать запрос с указанием кодировки и конвертированием выборки в юникод, но пока не придумал как к этому делу подойти

Сообщение отредактировал Litkevich Yuriy - 12.3.2008, 14:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 14:56
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Цитата(Litkevich Yuriy @ 12.3.2008, 14:42) *
как? и где?
В инишку пишешь БД и ее кодировку, а в коде относительно них и пляшешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 15:00
Сообщение #15


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

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

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




Репутация:   94  


не получится, у меня три БД и все с разными кодировками DOS-rus(Paradox), WIN1251 (IntrBase 5.x), UTF-8 (Firebird 2.x), из первых двух данные собираются, + данные через COM-порт с девайсов и в третью кладутся
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 15:32
Сообщение #16


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Цитата(Litkevich Yuriy @ 12.3.2008, 15:00) *
DOS-rus(Paradox), WIN1251 (IntrBase 5.x), UTF-8 (Firebird 2.x)
Однако! :)

Тады нужно искать, как такое сделать, я пока даже и не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 16:02
Сообщение #17


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

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

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




Репутация:   94  


блин, все облазил, попробывал так:
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //UTF-8Windows-1251
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));

думал раз уж в ODBC менеджере я указваю кодировку, то манеджер будет из нее в локальную конвертировать, а локальную я в программе указал.
фигушки не работает, тогда не понимаю как вообще это в Qt'ях работает, гдето упоминалось, что поумолчанию при работе с БД тип данных Qstring используется, наверное это мешает.

И непойму почему в Qt'ях непредусмотренно задание кодировки БД. :(
(в борланде индивидуально для каждого псевдонима можно кодировку выбрать)

Сообщение отредактировал Litkevich Yuriy - 12.3.2008, 16:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.3.2008, 16:21
Сообщение #18


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


А ты когда устанавливаешь кодек, до чтения строк из БД или после?
Просто нужно устанавливать до чтения в ту кодировку, а которой находится БД.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2008, 16:29
Сообщение #19


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

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

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




Репутация:   94  


приведенные выше строки определены в функции main, буквально так:
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //UTF-8Windows-1251
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
...
}

на буржуйских форумах люди тоже с этим парятся, тем кому надо кодировку БД отличную от основной, в коде делают селекты руками прекодируют зарание инициализированными кодеками, при вставке и обновлении процесс тот-же только в обратную сторону, а это ЗАД, неужели это единственный способ?
:wacko:

Сообщение отредактировал Litkevich Yuriy - 12.3.2008, 16:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 13.3.2008, 8:49
Сообщение #20


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


Два вопроса:
1) Какую кодировку ты указываешь при подключении к базе?
Я бы использовал для Firebird UTF8, для InterBase UNICODE_FSS.
2) Почему не использовать штатный драйвер Firebird/InterBase из поставки Qt Open Source?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 8.12.2024, 6:50