【发布时间】:2021-01-26 09:34:50
【问题描述】:
我需要从这个 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 编码的。这解释了这个问题,但我仍然不知道如何处理它。
【问题讨论】:
-
好像这个 xml 是用 ISO-8859-2 编码的。多么卑鄙……(我到处都是 UTF-8 的粉丝。)你可以考虑一个甚至更通用的解决方案,您以某种方式从响应中提取 XML 编码以将其用作
QTextCodec::codecForName()中的变量(尽管我一点也不知道如何实现这一点)。 ;-) -
如果是带有编码信息的XML,最好根本不转换,而是作为QByteArray传递,让XML解析器处理编码。
标签: c++ qt utf-8 qt5 qnetworkreply