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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextCodec и данные с сервера в кодировке отличной от локальной  (Прочитано 8537 раз)
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
Записан
Alex03
Гость
« Ответ #1 : Июнь 05, 2008, 06:49 »

Скорее всего у Вас encodedString уже не в 1251.

Ну и если у Вас исходники в UTF8 - то и замечательно, зачем QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"))? Пользуйте лучше trUtf8(). Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июнь 05, 2008, 07:02 »

или так, в main'е:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
ну и текст весь в tr'ы заключай
Записан

Юра.
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #3 : Июнь 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.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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