Название: 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.
|