Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Goshman от Апрель 15, 2009, 09:25



Название: Проблема с кодировками utf8 -> cp-1251
Отправлено: 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" переведена лингвистом


Название: Re: Проблема с кодировками utf8 -> cp-1251
Отправлено: lit-uriy от Апрель 15, 2009, 09:52
>>Строка с кириллицей выдергивается транслятором из *.qm файла и, как я понимаю, имеет кодировку utf8.
Строки в Qt имеют кодировку UTF-16. Т.е. тебе нужно из внутренней кодировки преобразовть в целевую.

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


Название: Re: Проблема с кодировками utf8 -> cp-1251
Отправлено: Goshman от Апрель 15, 2009, 11:14
Спасибо большое, помогло!