Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: pacmanoid от Март 28, 2006, 18:48 :o Хлопцы, помогите!!! Есть Firebird 1.5 на сервере и база в кодировке utf8, пишу приложение на QT3 и немогу выиащить данные. Продвигаю LINUX у себя на заводе, раньше с этой базой работало приложение написанное на C++ Builder-ре 6. Перевести базу в UTF-8 не имею права.
Читал форум, находил проблемы и их решения для MySQL, для Firebird невидел. Пробовал QTextCodec *codec=QTextCodec::codecForName("utf8"); QTextCodec::setCodecForCStrings(codec); не помогает. ПОМОГИТЕ!!! :shock: Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: i9 от Март 28, 2006, 19:11 У меня именно setCodecForCStrings помогал, и если я правильно помню он помогал, если он был в самом начале main():
Код:
Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: alex0303 от Март 28, 2006, 20:35 А в чём проблема то?
Оно вроде с виду работает? По крайней мере создал сейчас простенькую форму в дизайнере, там же в превью и поглядел. И показывает русские буковки и изменяет. БД была. Всё это на линухе, qt 3.3.6. Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: i9 от Март 29, 2006, 00:04 Цитата: "alex0303" А в чём проблема то? Оно вроде с виду работает? По крайней мере создал сейчас простенькую форму в дизайнере, там же в превью и поглядел. И показывает русские буковки и изменяет. БД была. Всё это на линухе, qt 3.3.6. А кодировка базы и локали у Вас случаем не одинаковая? То проблем конечно не заметите... PS Еще бывает параметр в базах (не уверен на счет этой базы): "кадировка клиента" (не путать с кодировкой хранения) Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: pacmanoid от Март 29, 2006, 09:23 Цитата: "i9" Цитата: "alex0303" А в чём проблема то? Оно вроде с виду работает? По крайней мере создал сейчас простенькую форму в дизайнере, там же в превью и поглядел. И показывает русские буковки и изменяет. БД была. Всё это на линухе, qt 3.3.6. А кодировка базы и локали у Вас случаем не одинаковая? То проблем конечно не заметите... PS Еще бывает параметр в базах (не уверен на счет этой базы): "кадировка клиента" (не путать с кодировкой хранения) Спасибо что откликнулись! Сейчас попробую int main( int argc, char ** argv ){ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8")); QApplication a( argc, argv ); .... } и посмотрю что получится. добавлено спустя 1 час: Нет, к сожалению не помогло :-((((( Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: Hordi от Март 29, 2006, 09:28 Проще всего заставить постгрес самостоятельно перекодировать строки в нужную кодировку. Например: локаль - KOI8, база - 1251, после открытия базы выполните запрос
SET CLIENT_ENCODING TO 'KOI8' и будет вам счастье. добавлено спустя 52 секунды: блин, торможу... База то Firebird... %( Название: Хлопцы, помогите!!! Firebird 1.5 + таб. в utf8 Отправлено: alex0303 от Март 29, 2006, 11:07 Да всё совсем не так.
У многих РСУБД (в том числе и firebird) кодировка в БД и кодировка на клиенте совсем разные вещи. Т.е. если на клиенте Вы указали некую кодировку Х, а в БД у вас всё хранится в кодировке Y, то всё нормально работает если Вы действительно передаёте Х и принятое воспринимаете как Х, и если Х и Y "совместимы". В драйвере QIBASE кодировка клиента прописана как UNICODE_FSS, а при передаче/приёме используется utf8()/fromUtf8(), и независимо от того как у Вас в БД лежит (WIN1251 или UNICODE_FSS) всё работает. Я проверял на linux-е с локалью koi8-r и БД в 1251. добавлено спустя 1 минуту: И по моему пост про QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8")); относился к строковым BLOB-ам. |