Название: функция tr() и переменная QString как совместить? Отправлено: DenisKh001 от Июня 05, 2011, 13:25 примерно такой код:
QString f; f = model.record(i).value(0).toString(); f = tr (f); // вот здесь конечно не соответствие типа ui->Town->addItem(f); Программа читает из SQLLite и вместо русских букв ромбики, что и заставило меня обратится к этой функции. Название: Re: функция tr() и переменная QString как совместить? Отправлено: Авварон от Июня 05, 2011, 13:53 tr тебе не поможет и она не для этого нужна
Название: Re: функция tr() и переменная QString как совместить? Отправлено: vincent от Июня 05, 2011, 14:12 В общем случае - нужно знать в какой кодировке хранятся данные в БД и при получении их переводить в нужную. Желательно что бы и и БД и приложение, конечно же, разрабатывались в UTF-8 :) - меньше будет заморочек.
В отношении SQLite3 - она хранит данные в UTF-8. Название: Re: функция tr() и переменная QString как совместить? Отправлено: DenisKh001 от Июня 05, 2011, 15:01 в main () написал
QTextCodec::setCodecForLocale ( QTextCodec::codecForName ( "UTF-8" ) ); QTextCodec::setCodecForCStrings ( QTextCodec::codecForName ( "UTF-8" ) ); QTextCodec::setCodecForTr ( QTextCodec::codecForName ( "UTF-8" ) ); и все равно ромбики! Куда копать-то не пойму. Название: Re: функция tr() и переменная QString как совместить? Отправлено: BRE от Июня 05, 2011, 15:26 в main () написал А для чего ты это написал? Что по твоему это делает?Название: Re: функция tr() и переменная QString как совместить? Отправлено: LisandreL от Июня 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. Название: Re: функция tr() и переменная QString как совместить? Отправлено: DenisKh001 от Июня 05, 2011, 20:23 СПАСИБО -LisandreL!
Установил SQLite Expert Personal и действительно увидел проблему кодировки. Перебил базу и теперь все работает идеально! Заодно исчезли и многие другие необъяснимые проблемы. Изначально очень простенькая база была сделана на sqlliteadmin и в нем все было по-русски, а вот при подключении возникли проблемы кодировки. |