Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: time.h от Июнь 28, 2011, 11:37



Название: Крякозябры в месседж боксах
Отправлено: time.h от Июнь 28, 2011, 11:37
При использовании русского языка в QMessageBox выводит крякозябры.Работаю под ubutnu 11.04.В качестве кодировки файла cpp установлена UTF - 8


Название: Re: Крякозябры в месседж боксах
Отправлено: LisandreL от Июнь 28, 2011, 11:43
А кодеки в программе установлены?


Название: Re: Крякозябры в месседж боксах
Отправлено: Пантер от Июнь 28, 2011, 11:45
time.h, читай мою подпись. Если не понятно, то в поиск, тема уже кучу раз пережевана.


Название: Re: Крякозябры в месседж боксах
Отправлено: time.h от Июнь 28, 2011, 16:33
Проблема решилась следующим способом
Код:
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForCStrings(codec);


Название: Re: Крякозябры в месседж боксах
Отправлено: BRE от Июнь 28, 2011, 16:51
Вместе с этими строками ты проблему не решил, а добавил!

Если уж исходники в utf-8, то и использовал бы QObject::trUtf8. Все ж проблем меньше будет.


Название: Re: Крякозябры в месседж боксах
Отправлено: LisandreL от Июнь 28, 2011, 18:10
Вместе с этими строками ты проблему не решил, а добавил!
И в чём он добавил проблему при условии, что программа точно не будет мультиязычной?


Название: Re: Крякозябры в месседж боксах
Отправлено: BRE от Июнь 28, 2011, 19:30
И в чём он добавил проблему при условии, что программа точно не будет мультиязычной?
Ну, при условии что программа точно не будет мультиязычной, будет разрабатываться на одной платформе, одним человеком и для себя, то проблем конечно никаких.
Самое забавное, что это решение применяют совершенно не разобравшись "а что же потом будет происходить?". Вспоминается анекдот про не работающую машину и советы - постучать по колесу и протереть лобовое стекло.


Название: Re: Крякозябры в месседж боксах
Отправлено: LisandreL от Июнь 28, 2011, 20:53
Самое забавное, что это решение применяют совершенно не разобравшись "а что же потом будет происходить?".
Ну, проблемы, которые всплывут у мультиязычной (даже потенциально) программы я представляю.


Название: Re: Крякозябры в месседж боксах
Отправлено: lolbla2 от Февраль 14, 2012, 20:15
Проблема решилась следующим способом
Код:
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForCStrings(codec);

Мне это не помогло, кто подскажет что делать((?

После этого кода вместо таких крякозябр:
(http://s1.hostingkartinok.com/uploads/images/2012/02/cd3e0d2d8f00efece51485fe38ac1d80.png)

получились чуть посимпотичнее, но тоже не айс:
(http://s1.hostingkartinok.com/uploads/images/2012/02/c023c492f4a82425613940a54046557c.png)


Название: Re: Крякозябры в месседж боксах
Отправлено: sudo от Февраль 14, 2012, 20:23
Код:
  // Установка локали по умолчанию
  QLocale russianLocale(QLocale::Russian, QLocale::RussianFederation);
  QLocale::setDefault(russianLocale);

  // Установка текстовых кодеков
  QTextCodec* defaultCodec = QTextCodec::codecForName("UTF-8");
  QTextCodec::setCodecForTr(defaultCodec);
  QTextCodec::setCodecForLocale(defaultCodec);
  QTextCodec::setCodecForCStrings(defaultCodec);

  // Устанока QTranslator для Qt на текущую локаль
  QTranslator* qtTranslator = new QTranslator(QCoreApplication::instance());
  qtTranslator->load("qt_ru_RU", QLibraryInfo::location(QLibraryInfo::TranslationsPath));
  QCoreApplication::instance()->installTranslator(qtTranslator);


Название: Re: Крякозябры в месседж боксах
Отправлено: kambala от Февраль 14, 2012, 20:49
Проблема решилась следующим способом
Код:
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForCStrings(codec);

Мне это не помогло, кто подскажет что делать((?
в таком случае файл исходного кода тоже должен быть в кодировке UTF-8