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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Избитая тема с кодировками  (Прочитано 3354 раз)
UltraPenguin
Гость
« : Март 31, 2014, 09:41 »

Доброго времени суток!

Столкнулся с непонятным (для меня Подмигивающий) поведением русскоязычного текста в линукс версии проекта.
Собственно в проекте есть n-ное количество текстовых констант на русском, как пример - текст какого-либо предупреждения.
При прогоне программы первое появление окна с предупреждением представляет собой сплошные кракозябры. Но если повторно вызвать это окно (не перезапуская всего приложения) русский текст начинает нормально отображаться В замешательстве

Иногда если исправить какую-нибудь из текстовых констант, все надписи при следующем запуске - кракозябры. Однако, на второй запуск все исправляется.

Может есть какие-то особенности работы с русским из-под линукса в Qt?

PS кодировка локали системы и всех исходников - UTF-8, пытался также устанавливать кодировку вручную командами:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); 
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
профита какого-либо от них вообще не заметил.

Знаю про лингвиста, но программа - это порт с другой IDE, поэтому буду переводить все тексты с его помощью только если не найду решения (впрочем в любом случае буду, но позже)
Записан
VanDerSam
Гость
« Ответ #1 : Март 31, 2014, 14:43 »

А каким способом вы из строковой константы формируете объект QString? Пример можете привести?
Записан
UltraPenguin
Гость
« Ответ #2 : Март 31, 2014, 17:15 »

Код:
QString("Тут текст");
или
Код:
QString mes = "Тут сообщение";
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #3 : Март 31, 2014, 18:22 »

используй QString::fromUtf8() или trUtf8()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
arhiv6
Гость
« Ответ #4 : Март 31, 2014, 18:25 »

У вас просто опечатка. Надо так:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
Проверенно неоднократно, работает.
Записан
UltraPenguin
Гость
« Ответ #5 : Апрель 01, 2014, 12:14 »

используй QString::fromUtf8() или trUtf8()

Да fromUtf8() помогает, спасибо большое!  Веселый
Получается что из-за того, что кодировка внутреннего хранения QString не utf8, и если исходники в utf8, нужно всегда использовать QString::fromUtf8() ?  Показает язык

Цитата: arhiv6
Надо так:
Код:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
Проверенно неоднократно, работает.

Не знаю, в моем случае не прокатило Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #6 : Апрель 01, 2014, 12:34 »

используй QString::fromUtf8() или trUtf8()

Да fromUtf8() помогает, спасибо большое!  Веселый
Получается что из-за того, что кодировка внутреннего хранения QString не utf8, и если исходники в utf8, нужно всегда использовать QString::fromUtf8() ?  Показает язык
да. в Qt 5 необходимости в этом уже нету.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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