在处理QWebKit的QWebElement及其toPlainText()函数(*)时,我很难掌握字符编码的诀窍。
我得到了一个QString,它的UTF8编码保存了HTML页面的内容,该页面是通过QFile从本地磁盘读取的。不,我想用QWebKit解析这个页面。因此,我将QWebFrame对象定义为QWebPage的一部分。使用QWebFrame::setHtml(),我将QString填充到QWebKit环境中。
QString rawReport = "some UTF8 encoded string read in previously";
QWebPage p;
QWebFrame *frame = p.mainFrame();
frame->setHtml(rawReport);
QWebElement report = frame->documentElement();
qDebug() << report.toPlainText();但不知怎么的,qDebug()似乎搞错了编码,例如,德国的umlauts äöüß显示得相当有趣。即使不是作为它们对应的HTML实体。
我怀疑这是qDebug的错,而是QWebElement内部的编码。在我读到的某个地方,QWebFrame::setHtml()期望UTF8编码。但我几乎可以肯定,这里就是这样的。
我遗漏了什么?是否有某个函数/选项可以强制QWebFrame/QWebElement对输入和输出使用特定的字符编码?
*使用QWebElement::toOuterXml()或QWebElement::toInnerXml()显示相同的编码问题。
发布于 2011-11-29 12:11:15
您是否尝试过使用QString的from*()函数来查找toPlainText()返回的字符串是如何编码的?
文件说明
使用此方法时,WebKit假设外部资源(如JavaScript程序或样式表)是以UTF-8编码的,除非另有指定。例如,可以通过HTML脚本标记的charset属性指定外部脚本的编码。还可以由web服务器指定编码。“”。
因此,我将尝试更改要加载的html源(对应的meta标记)中指定的字符集,以显式指定您使用的是UTF-8。
https://stackoverflow.com/questions/8310196
复制相似问题