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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с кодировками utf8 -> cp-1251  (Прочитано 6091 раз)
Goshman
Гость
« : Апрель 15, 2009, 09:25 »

Есть проект для linux embedded с использованием Qt. Проект пишется на компе с windows, а собирается для железяки уже на линуксовом компе. Кирилица заменена транслитом и обрабатываются tr(). Собственно на тачскрине все отображается корректно. Необходимо часть сообщений выводить в текстовый файл в кодировке cp-1251. Строка с кириллицей выдергивается транслятором из *.qm файла и, как я понимаю, имеет кодировку utf8. Какие необходимо выполнить преобразования, чтобы записать ее в текстовый файл в кодировке ср-1251?

при инициализации главного окошка используется кодек
Код:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);

далее по тексту для сохранения ошибок вызывается
Код:
saveErrLog(int type, const QString &text)
на входе переменной text передается что-то типа tr("OSHIBKA 1")

"OSHIBKA 1" переведена лингвистом
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 15, 2009, 09:52 »

>>Строка с кириллицей выдергивается транслятором из *.qm файла и, как я понимаю, имеет кодировку utf8.
Строки в Qt имеют кодировку UTF-16. Т.е. тебе нужно из внутренней кодировки преобразовть в целевую.

Удобно такое преобразовние делать с помощью становки кодека для QTextStream (setCodec)
Можешь сделать это в своей функции saveErrLog
Записан

Юра.
Goshman
Гость
« Ответ #2 : Апрель 15, 2009, 11:14 »

Спасибо большое, помогло!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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