| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, 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 | ||
Неа. 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. Всем спасибо кто не прошел мимо. |