Russian Qt Forum
Ноябрь 24, 2024, 13:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: FB + IbExpert+QT Проблема с кирилицей  (Прочитано 9464 раз)
regan32
Гость
« : Август 29, 2010, 07:02 »

доброе утро
по теме: есть созданная в ibexperte база данных огнептиц в которой присутствуют элементы базы на русском языке
а при загрузке базы через приложение написанное на QT вместо русских букв кракозябры
Код:
QSqlQuery q("select * from POSTAVSHIK_TABLE");
     QSqlRecord rec = q.record();
     qDebug() << "Number of columns: " << rec.count();
     int nameCol = rec.indexOf("IMYA_POSTAVSHIKA");
     while (q.next()){
         QByteArray encodedString = q.value(nameCol).toByteArray();
          QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
          QString string = codec->toUnicode(encodedString);
         qDebug()<<string;}
здесь пытаюсь перевести
что не так?
заранее спасибо
« Последнее редактирование: Август 29, 2010, 08:29 от regan32 » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #1 : Август 29, 2010, 11:43 »

Во первых нужно посмотреть в какой кодировке создана БД, во вторых попробуй в mian пропиши
Код:
  QTextCodec * myTextCodec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr( myTextCodec );
    QTextCodec::setCodecForCStrings( myTextCodec );
Записан
varkon
Гость
« Ответ #2 : Август 29, 2010, 13:59 »

Добавлю так же что к Firebird надо коннектится с кодировкой cp1251 - даже если база в UTF-8
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Август 29, 2010, 15:34 »

>>Firebird надо коннектится с кодировкой cp1251 - даже если база в UTF-8
у меня БД в UTF-8, специальных телодвижений не делаю.
Записан

Юра.
varkon
Гость
« Ответ #4 : Август 29, 2010, 16:35 »

У меня тоже база в UTF-8, и с проблемой кодировок пришлось столкнуться (например некорректно отображались символы в IBExpert, и соответственно обратное - в программе не отображалось то, что добавлялось в эксперте). Решением проблемы было именно установка виндовской кодировки соединения. К сожалению пруф дать не смогу, не помню.
Записан
Whiplash
Гость
« Ответ #5 : Август 30, 2010, 08:52 »

Я разрабатываю приложения на связке Qt+Firebird. Qt - 4.6.3 (начинал с 4.4 вроде), Firebird - 2.1

Короче. База - в UTF-8, коннекчусь в UTF-8, даже исходники в UTF-8 (да, я UTF8-поклонник Улыбающийся ).
Если в Эксперте проблемы с кодировкой - так это не с кодировкой проблемы, а с экспертом. Обновите Эксперт, будет счастье. В эксперте, кстати, отдельный редактор UTF-8 строк - при редактировании такой строки справа от поля есть кнопочка "...".

Из Qt коннекчусь к Firebird с такой опцией: CHARSET=UTF8 (я использую драйвер QFIREBIRD, раньше использовал родной, название опции другое, проблем с кодировкой не было).
Кодеки выставляю так:
Код:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);

Без последнего кодека плохо ведут себя текстовые BLOB (в UTF8 ессно).

IBExpert версии 2010.06.17, к базе коннектится в UTF-8, галка "Do NOT perform conversion from/to UTF8" снята. Свежий IBExpert тут: http://www.ibexpert.com/rus/ibe_sfx.exe

Вроде, всё рассказал.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Сентябрь 01, 2010, 01:38 »

Цитировать
Я разрабатываю приложения на связке Qt+Firebird. Qt - 4.6.3 (начинал с 4.4 вроде), Firebird - 2.1

Короче. База - в UTF-8, коннекчусь в UTF-8, даже исходники в UTF-8 (да, я UTF8-поклонник  ).
Если в Эксперте проблемы с кодировкой - так это не с кодировкой проблемы, а с экспертом. Обновите Эксперт, будет счастье. В эксперте, кстати, отдельный редактор UTF-8 строк - при редактировании такой строки справа от поля есть кнопочка "...".

Согласен на 100% - у меня тоже самое

Вообще Whiplash - все верно говороишь!
Записан
vlad-mal
Гость
« Ответ #7 : Сентябрь 09, 2010, 02:29 »

Добавлю так же что к Firebird надо коннектится с кодировкой cp1251 - даже если база в UTF-8
К FireBird можно коннектится в той кодировке, в которой ты собираешься отправляешь (получать обратно) данные.

Всю перекодировку сделает сервер. См. ReleaseNotes (FB 2.1 и новее).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.