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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: функция tr() и переменная QString как совместить?  (Прочитано 5760 раз)
DenisKh001
Гость
« : Июнь 05, 2011, 13:25 »

примерно такой код:
QString f;
f = model.record(i).value(0).toString();
f = tr (f); // вот здесь конечно не соответствие типа
ui->Town->addItem(f);
Программа читает из SQLLite и вместо русских букв ромбики, что и заставило меня обратится к этой функции.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Июнь 05, 2011, 13:53 »

tr тебе не поможет и она не для этого нужна
Записан
vincent
Гость
« Ответ #2 : Июнь 05, 2011, 14:12 »

В общем случае - нужно знать в какой кодировке хранятся данные в БД и при получении их переводить в нужную. Желательно что бы и и БД и приложение, конечно же, разрабатывались в UTF-8  Улыбающийся - меньше будет заморочек.
В отношении SQLite3 - она хранит данные в UTF-8.
« Последнее редактирование: Июнь 05, 2011, 14:15 от vincent » Записан
DenisKh001
Гость
« Ответ #3 : Июнь 05, 2011, 15:01 »

в main () написал
QTextCodec::setCodecForLocale ( QTextCodec::codecForName ( "UTF-8" ) );
QTextCodec::setCodecForCStrings ( QTextCodec::codecForName ( "UTF-8" ) );
QTextCodec::setCodecForTr ( QTextCodec::codecForName ( "UTF-8" ) );
и все равно ромбики! Куда копать-то не пойму.
Записан
BRE
Гость
« Ответ #4 : Июнь 05, 2011, 15:26 »

в main () написал
А для чего ты это написал? Что по твоему это делает?


Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Июнь 05, 2011, 17:01 »

В отношении SQLite3 - она хранит данные в UTF-8.
1) SQLite может хранить в любой UTF кодировке (не только UTF-8, но и в UTF-16 с любым порядком байт).
2) Если б там, то Qt прочитал бы текст без проблем с любой установленной кодировкой.
Скорее всего эта база порождение очередного делфиста, который неудосужился прочесть спецификацию БД и вогнал туда текст в виндовой кодировке.
Посмотрите базу в SQLite Expert Personal. если там тоже будут ромбики - верный признак, что БД не в той кодировке.

Выход 1:
http://www.prog.org.ru/index.php?topic=18057.msg121369#msg121369

Выход 2:
Если создатель БД в вашей комманде, объяснить ему, что он чудак на букву М и заставить переписать базу в UTF.
Записан
DenisKh001
Гость
« Ответ #6 : Июнь 05, 2011, 20:23 »

СПАСИБО -LisandreL!
Установил SQLite Expert Personal и действительно увидел проблему кодировки. Перебил базу и теперь все работает идеально! Заодно исчезли и многие другие необъяснимые проблемы. Изначально очень простенькая база была сделана на sqlliteadmin и в нем все было по-русски, а вот при подключении возникли проблемы кодировки.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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