Название: Избитая тема с кодировками Отправлено: UltraPenguin от Март 31, 2014, 09:41 Доброго времени суток!
Столкнулся с непонятным (для меня ;)) поведением русскоязычного текста в линукс версии проекта. Собственно в проекте есть n-ное количество текстовых констант на русском, как пример - текст какого-либо предупреждения. При прогоне программы первое появление окна с предупреждением представляет собой сплошные кракозябры. Но если повторно вызвать это окно (не перезапуская всего приложения) русский текст начинает нормально отображаться :-\ Иногда если исправить какую-нибудь из текстовых констант, все надписи при следующем запуске - кракозябры. Однако, на второй запуск все исправляется. Может есть какие-то особенности работы с русским из-под линукса в Qt? PS кодировка локали системы и всех исходников - UTF-8, пытался также устанавливать кодировку вручную командами: Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Знаю про лингвиста, но программа - это порт с другой IDE, поэтому буду переводить все тексты с его помощью только если не найду решения (впрочем в любом случае буду, но позже) Название: Re: Избитая тема с кодировками Отправлено: VanDerSam от Март 31, 2014, 14:43 А каким способом вы из строковой константы формируете объект QString? Пример можете привести?
Название: Re: Избитая тема с кодировками Отправлено: UltraPenguin от Март 31, 2014, 17:15 Код: QString("Тут текст"); Код: QString mes = "Тут сообщение"; Название: Re: Избитая тема с кодировками Отправлено: kambala от Март 31, 2014, 18:22 используй QString::fromUtf8() или trUtf8()
Название: Re: Избитая тема с кодировками Отправлено: arhiv6 от Март 31, 2014, 18:25 У вас просто опечатка. Надо так:
Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8")); Название: Re: Избитая тема с кодировками Отправлено: UltraPenguin от Апрель 01, 2014, 12:14 используй QString::fromUtf8() или trUtf8() Да fromUtf8() помогает, спасибо большое! :D Получается что из-за того, что кодировка внутреннего хранения QString не utf8, и если исходники в utf8, нужно всегда использовать QString::fromUtf8() ? :P Цитата: arhiv6 Надо так: Код: Код: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8")); Не знаю, в моем случае не прокатило :) Название: Re: Избитая тема с кодировками Отправлено: kambala от Апрель 01, 2014, 12:34 используй QString::fromUtf8() или trUtf8() Да fromUtf8() помогает, спасибо большое! :D Получается что из-за того, что кодировка внутреннего хранения QString не utf8, и если исходники в utf8, нужно всегда использовать QString::fromUtf8() ? :P |