从 QNetworkReply 读取后 Qt5 没有抛光字符

Qt5 no polish characters after reading from QNetworkReply

我需要从这个 url https://www.nbp.pl/kursy/xml/lasta.xml 中获取数据。问题是 response 包含损坏的波兰语字符(?????? 而不是 śćąęó)。

我的控制台和 GUI 完全能够显示波兰语字符,只有这个 content 字符串损坏了。

我不知道该怎么办。我在 Linux.

上使用 CLion
#include "DataDownloader.h"
#include <QtWidgets/QMessageBox>

std::string DataDownloader::downloadData() const
{
    QNetworkAccessManager manager;
    QNetworkReply *response = manager.get(QNetworkRequest(QUrl(this->url)));
    QEventLoop event;
    connect(response, SIGNAL(finished()), &event, SLOT(quit()));
    event.exec();

    std::string content = QString(response->readAll()).toStdString();

    return content;
}

编辑: 实际上,其他包含波兰语标志的网站工作得很好。但是,我仍然必须让它与我上面提供的那个一起工作

编辑 2: 好像这个 xml 是用 ISO-8859-2 编码的。这解释了问题,但我仍然不知道如何处理它。

这有效。

std::string DataDownloader::downloadData() const
{
    QNetworkAccessManager manager;
    QNetworkReply *response = manager.get(QNetworkRequest(QUrl(this->url)));
    QEventLoop event;
    connect(response, SIGNAL(finished()), &event, SLOT(quit()));
    event.exec();

    QTextCodec* codec = QTextCodec::codecForName("ISO-8859-2");
    QTextDecoder decoder{codec};

    return decoder.toUnicode(response->readAll()).toStdString();
}