如何解决从QNetworkReply读取后Qt5没有波兰语字符
我需要从该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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。