Название: Проблема с получением QByteArray Отправлено: UndeadDragon от Декабрь 31, 2012, 01:35 Всем привет. Есть такой небольшой баг, пожалуй просто его продемонстрирую.
Код: void myClass::onResult(QNetworkReply* result){ С тем же содержимым result иначе: Код: void myClass::onResult(QNetworkReply* result){ По какой причине так происходит? Заранее спасибо. Название: Re: Проблема с получением QByteArray Отправлено: Dancing_on_water от Декабрь 31, 2012, 05:59 Как проверял, что массив пуст?
Название: Re: Проблема с получением QByteArray Отправлено: Bepec от Декабрь 31, 2012, 10:40 Проблема % на 80 в кодировке. Стандартное преобразование QString(QByteArray) использует кодировку Ascii. Если в начале имеется нулевой символ, строка считается пустой :)
PS у тебя на tr какая кодировка стоит? Название: Re: Проблема с получением QByteArray Отправлено: UndeadDragon от Декабрь 31, 2012, 13:48 Как проверял, что массив пуст? В отладочном пошаговом режиме.Проблема % на 80 в кодировке. Стандартное преобразование QString(QByteArray) использует кодировку Ascii. Если в начале имеется нулевой символ, строка считается пустой :) Тоже так подумал, только не вкуриваю как подправить. Вообще сервер в UTF возвращает текст или хрен знает в чем.PS у тебя на tr какая кодировка стоит? На tr я поставил UTF как раз. Код: QTextCodec *wincodec = QTextCodec::codecForName("UTF-8"); Название: Re: Проблема с получением QByteArray Отправлено: Old от Декабрь 31, 2012, 14:05 В отладочном пошаговом режиме. А ты опробуй просто добавить отладочный вывод размера и посмотришь.Название: Re: Проблема с получением QByteArray Отправлено: Bepec от Декабрь 31, 2012, 14:15 Всё правильно. У тебя изза кодировки ascii строка режется до 0.
Потому делай проще - считывай в QByteArray и кодируй с помощью QTextCodec в Utf8. И на выходе у тебя будет строка как и после tr. Название: Re: Проблема с получением QByteArray Отправлено: UndeadDragon от Декабрь 31, 2012, 16:08 Всё правильно. У тебя изза кодировки ascii строка режется до 0. Не совсем понял мысль. Если считывать в QByteArray, как в моем первом примере, то дальше уже ничего не получится, ибо не считается.Потому делай проще - считывай в QByteArray и кодируй с помощью QTextCodec в Utf8. И на выходе у тебя будет строка как и после tr. Сделал так пока в общем. Код: QByteArray var = tr(result->readAll()).toAscii(); Название: Re: Проблема с получением QByteArray Отправлено: Bepec от Декабрь 31, 2012, 17:51 Что тебе сказать. Ты пропустил один шаг - перекодировку.
1 Считываешь - QByteArray. 2 Перекодируешь - QTextCodec. 3 На выходе - QString. Второй шаг у тебя сейчас делается через tr, который вызывает тот же QTextCodec :D |