Можно ли в QNetworkRequest задать кодировку?

226
27 апреля 2018, 14:17

Можно ли в QNetworkRequest задать кодировку? А то я загружаю с помощью него сайт а там вместо русских букв кракозяблы.

void Downloader::getData(QString str)
{
    whatdownloaded = 1;
    QUrl url(str); // URL, к которому будем получать данные
    QNetworkRequest request;    // Отправляемый запрос
    request.setUrl(url);        // Устанавлвиваем URL в запрос
    manager->get(request);      // Выполняем запрос
}

void Downloader::onResult(QNetworkReply *reply)
{
    // Если в процесе получения данных произошла ошибка
    if(reply->error()){
        // Сообщаем об этом и показываем информацию об ошибках
        qDebug() << "ERROR";
        qDebug() << reply->errorString();
    } else {
        QByteArray str = reply->readAll();
        QString str2(str);//тут на месте русских букв кракозяблы ? и т.д
    }
}
Answer 1

Вы должны верно конвертировать полученный QByteArray в QString, указав правильную кодировку.
Для этого можно воспользоваться функцией хелпером QString::fromUtf8, написав так

QString str2 = QString::fromUtf8(str)

Она преобразует массив байт в строку с кодировкой UTF-8.

Если вам нужна какая-то специфичная кодировка, то для этого можно воспользоваться классом QTextCodec.

QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString str2 = codec->toUnicode(str1);

Функция codecForName принимает аргументом строку с названием кодировки. По ссылке выше вы найдете список поддерживаемых кодировок.

READ ALSO
Проблема с перегрузкой операторов

Проблема с перегрузкой операторов

Есть родительский класс с перегрузкой оператора +

235
Графический векторный редактор

Графический векторный редактор

В вузе дали тему курсовой: Графический векторный редакторДля реализации графики желательно использовать graphics

231
сортировка односвязного списка C++

сортировка односвязного списка C++

помогите, пожалуйста, с сортировкой односвязного спискаесть структура студент, формат фамилия_имя_отчество_возраст_успеваемость

240