Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt 4 - Кодировка: QByteArray -> QString


Автор: wowka19 9.8.2013, 16:18
Сразу скажу: искал на форуме решение проблемы, но нету :( Вернее темы с похожей проблемой есть, но там все тухло.

итак...
получаю данные с сервера в UTF8 через метод QByteArray QHttp::readAll().
Теперь нужно эти данные (т.е. текст) вывести в какойнибудь виджет (QTextEdit, QTableWidgetItem, etc...)
Использую QString(QByteArray) для перевода в QString и вывожу, Но везде крякозябры!
Что делать?

Upd: есть подозрения, что проблема связана с BOM

Автор: borisbn 9.8.2013, 16:46
Код
QString::fromUtf8( byteArray.constData() )


Цитата(wowka19 @  9.8.2013,  16:18 Найти цитируемый пост)
есть подозрения, что проблема связана с BOM

Неа. BOM бывает только в файлах в кодировке utf-8

Автор: wowka19 9.8.2013, 16:54
насколько знаю BOM - это три служебных/невидимых знака в начале UTF файла (бывают UTF файлы и без них). Т.е. ничто не мешает передавать их по HTTP, но справедливости ради скажу что данные мне приходят БЕЗ BOM - проверил.
Также руками добавлял к полученным данным в начало BOM и опять повторил все возможные трюки с кодировкой - результат почти тот же (некоторые методы понимают BOM и съедают его, а некоторые добавляют в начало три крякозябры).
Короче дело стоИт на месте - помогите!

Автор: borisbn 9.8.2013, 17:01
wowka19, ты пробовал, то, что я предложил ? У меня это работает. Как раз в той же ситуации (QByteArray приходит из сети в Utf-8).

Автор: wowka19 9.8.2013, 17:31
пробовал:
������ - это в виджетах
?OE?AO - это в консоли qDebug() << ;

Привет - так ДОЛЖНО быть

Автор: bsa 9.8.2013, 21:22
wowka19, была подобная тема. там данные не в utf8 приходили.

Автор: wowka19 11.8.2013, 01:17
ПРОБЛЕМА РЕШЕНА!
оказалось что сервер отсылал мне данные не в UTF-8, а в KOI8-R.
Путаница вышла из-за того, что проверял я в браузере, где все было ОК.
Причиной, на основе которой сервер вел себя по разному, оказался заголовок "User-Agent": без него присылается KOI8-R, а с ним - UTF-8.
Всем спасибо кто не прошел мимо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)