Maison  >  Questions et réponses  >  le corps du texte

c++ - QT软件中QByteArray转QString,死活转不了

QT creator 3.4.2
qt 5.5.5 msvc 2013
MinGW
windows 7

我使用QNetworkReply readAll函数得到QByteArray网页数据,转换为QString类型
通过qDebug()输出,输出的结果为空
如:QByteArray data=pRepy->readAll();
qDebug()<<"toStaring:"<<QString(data); //整行不显示,包括toString

QTextBrowser view;
view.append(data);
qDebug()<<"toHtml"<<view.toHtml(); //不显示,包括toHtml字符串
qDebug()<<"totoPlainText"<<view.toPlainText(); //不显示,包括toPlainText字符串

qDebug()<<QString(QString::fromLatin1(data)); //不显示
qDebug()<<QString(QString::fromLocal8Bit(data)); //不显示
qDebug()<<QString(QString::fromStdString(data)); //不显示
qDebug()<<QString(QString::fromUtf8(data)); //不显示
以上方法全不显示
std::string str=data.toStdString();
cout<<str<<endl; //显示正确
以下全不显示
qDebug()<<QString(data);
qDebug()<<(QString)data;
qDebug()<<QString(QString::fromLatin1(str.c_str()));
qDebug()<<QString(QString::fromLocal8Bit(str.c_str()));
qDebug()<<QString(QString::fromStdString(str.c_str()));
qDebug()<<QString(QString::fromUtf8(str.c_str()));
qDebug()<<"str:"<<QString::fromLatin1(data);
qDebug()<<"str:"<<QString::fromLocal8Bit(data);
qDebug()<<"str:"<<QString::fromUtf8(data);
qDebug()<<"str:"<<QString::fromStdString(str);

注:有个别会显示 "",大多数完全不显示,

我也怀疑是qDebug()的问题,所以我做了个这样的正则表达式,一次没匹到成功过,问题是每个网页都是这种格式
QRegExp rx(QString("<html>\"(.*)\"</html>"));
int pos=qstr.indexOf(rx);

另外 QByteArray data=pRepy->readAll()
data数据传到UI界面,放到QTextBrowser控件里,在界面上显示正常
QTextBrowser v.append(data) //显示正常

获取的网页数据,有很多网站的数据流都无法转换成QString类型,我使用qDebug()结果都是空,请问有解决的办法吗?

阿神阿神2765 Il y a quelques jours898

répondre à tous(0)je répondrai

Pas de réponse
  • Annulerrépondre