Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Maxim от Июль 21, 2009, 11:13



Название: Проблемы с кодировкой
Отправлено: Maxim от Июль 21, 2009, 11:13
Сам файл с кодом в UTF-8.
Код:
	userModel = new QSqlTableModel();
userModel->setTable("User");
userModel->setEditStrategy(QSqlTableModel::OnRowChange);
userModel->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
userModel->setHeaderData(1, Qt::Horizontal, QObject::tr("Имя"));
userModel->setHeaderData(2, Qt::Horizontal, QObject::tr("Фамилия"));
userModel->setHeaderData(3, Qt::Horizontal, QObject::tr("Отчество"));
userModel->setHeaderData(4, Qt::Horizontal, QObject::tr("Рабочее место"));
userModel->setHeaderData(5, Qt::Horizontal, QObject::tr("Сетевое имя"));
Выдаёт вот это:
(http://pic.ipicture.ru/uploads/090721/thumbs/uez2LWGZLz.jpg) (http://ipicture.ru/Gallery/Viewfull/21162852.html)
Что делать с кодировкой?


Название: Re: Проблемы с кодировкой
Отправлено: BRE от Июль 21, 2009, 11:21
Сам файл с кодом в UTF-8.
Тогда QObject::trUtf8();


Название: Re: Проблемы с кодировкой
Отправлено: developer от Июль 21, 2009, 11:24
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QTextCodec::setCodecForTr(QTextCodec::codecForName("cp1251"));
      // или
     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"));
 }

Нужно использовать поиск. Ета тема уже была не раз.


Название: Re: Проблемы с кодировкой
Отправлено: BRE от Июль 21, 2009, 11:31
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QTextCodec::setCodecForTr(QTextCodec::codecForName("cp1251"));
      // или
     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251"));
 }

Нужно использовать поиск. Ета тема уже была не раз.
А что по твоему делают эти строки?  ;)
А почему кодировка CP1251? /*Maxim указал, что кодировка исходника UTF8.*/

[off] Надо не столько поиском пользоваться, а один раз разобраться с кодировками и локализацией в Qt...[/off]


Название: Re: Проблемы с кодировкой
Отправлено: Maxim от Июль 21, 2009, 12:08
Нет, не получилось. Теперь такой код:
Код:
void DatabaseController::InitUserModel()
{
userModel = new QSqlTableModel();
userModel->setTable("User");
userModel->setEditStrategy(QSqlTableModel::OnRowChange);
userModel->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
userModel->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Имя"));
userModel->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Фамилия"));
userModel->setHeaderData(3, Qt::Horizontal, QObject::tr("Отчество"));
userModel->setHeaderData(4, Qt::Horizontal, QObject::tr("Рабочее место"));
userModel->setHeaderData(5, Qt::Horizontal, QObject::tr("Сетевое имя"));
}
Код:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);

if (DatabaseController::Init())
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("Utf-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Utf-8"));
EquipmentList w;
w.show();
return a.exec();
}
return -1;
}
И в результате:
(http://pic.ipicture.ru/uploads/090721/thumbs/IU3NSwcUAQ.jpg) (http://ipicture.ru/Gallery/Viewfull/21166494.html)


Название: Re: Проблемы с кодировкой
Отправлено: BRE от Июль 21, 2009, 12:13
Если кодировка точно Utf8, то попробуй БЕЗ этих строчек (просто trUtf8):
Код
C++ (Qt)
               QTextCodec::setCodecForTr(QTextCodec::codecForName("Utf-8"));
               QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Utf-8"));
 


Название: Re: Проблемы с кодировкой
Отправлено: lit-uriy от Июль 21, 2009, 12:42
setCodecForCStrings здесь вообще непричём.


Название: Re: Проблемы с кодировкой
Отправлено: SASA от Июль 23, 2009, 11:54
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

У меня такое чувство, что регистр имеет значение.
Пишу под Win. Пока явно не указал Windows-1250 для tr тоже были кракозяблики.

З.Ы. А может функция DatabaseController::InitUserModel() вызывается из DatabaseController::Init(), тобиш до установки кодеков?


Название: Re: Проблемы с кодировкой
Отправлено: Alex Custov от Июль 23, 2009, 13:47
http://doc.trolltech.com/4.4/i18n.html