Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: qtuser от Июнь 04, 2008, 21:48



Название: QTextCodec и данные с сервера в кодировке отличной от локальной
Отправлено: qtuser от Июнь 04, 2008, 21:48
Ситуация такая. У меня в системе стоит кодировка utf8, в main.cpp, чтобы отображался русский текст прописал:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
после этого текст на виджетах отображается корректно. Теперь с помощью qhttp получаю данные от сервера, в которых есть киррилица в windows-1251, котрые некорректно отображаются, поэтому решил перегнать их в utf8 и вывести на виджет, для этого написал функцию (пример из assistant-а):
Код:
QByteArray encodedString;
encodedString.append(data);
QTextCodec *codec = QTextCodec::codecForName("windows-1251");
QString result = codec->toUnicode(encodedString);
return result;
Но при выводи текста, который был обработан этой функцией, продолжает отображаться каракулями. Если же закомментировать строку в main.cpp относительно utf8, то текст с сервера с помощью функции преобразуется и отображается нормально, но уже русский текст на кнопках и т.д показывается каракулями. Помогите разобраться.
ЗЫ. linux, qt 4.3.4


Название: Re: QTextCodec и данные с сервера в кодировке отличной от локальной
Отправлено: Alex03 от Июнь 05, 2008, 06:49
Скорее всего у Вас encodedString уже не в 1251.

Ну и если у Вас исходники в UTF8 - то и замечательно, зачем QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"))? Пользуйте лучше trUtf8(). :)


Название: Re: QTextCodec и данные с сервера в кодировке отличной от локальной
Отправлено: lit-uriy от Июнь 05, 2008, 07:02
или так, в main'е:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
ну и текст весь в tr'ы заключай


Название: Re: QTextCodec и данные с сервера в кодировке отличной от локальной
Отправлено: Mikhail от Июнь 07, 2008, 07:43
Ситуация такая. У меня в системе стоит кодировка utf8, в main.cpp, чтобы отображался русский текст прописал:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
после этого текст на виджетах отображается корректно. Теперь с помощью qhttp получаю данные от сервера, в которых есть киррилица в windows-1251, котрые некорректно отображаются, поэтому решил перегнать их в utf8 и вывести на виджет, для этого написал функцию (пример из assistant-а):
Код:
QByteArray encodedString;
encodedString.append(data);
QTextCodec *codec = QTextCodec::codecForName("windows-1251");
QString result = codec->toUnicode(encodedString);
return result;
Но при выводи текста, который был обработан этой функцией, продолжает отображаться каракулями. Если же закомментировать строку в main.cpp относительно utf8, то текст с сервера с помощью функции преобразуется и отображается нормально, но уже русский текст на кнопках и т.д показывается каракулями. Помогите разобраться.
ЗЫ. linux, qt 4.3.4

Текст на виджетах лучше писать на английском языке и пользоваться трансляторами переводов - это политика предлагаемая Trolltech.