我在处理QWebKit的QWebElement
及其toPlainText()
函数(*)时遇到了字符编码的问题。
我有一个带有UTF8编码的QString
,其中包含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()
似乎得到编码错误,例如德国变音符号äöüß
显示相当有趣。甚至不是他们对应的HTML实体。
我怀疑它是qDebug的错,而是QWebElement中的编码。在某处我读到,QWebFrame::setHtml()
期望UTF8编码。但我几乎可以肯定,这就是这种情况。
我错过了什么?是否有某个函数/选项强制QWebFrame / QWebElement对输入和输出使用特定的字符编码?
QWebElement::toOuterXml()
or QWebElement::toInnerXml()
show the same encoding problem.
您是否尝试过使用QString的***()函数来查找toPlainText()返回的字符串是如何编码的?
文件说明
使用此方法时,WebKit假定外部资源(如JavaScript程序或样式表)以UTF-8编码,除非另有说明。例如,可以通过HTML脚本标记的charset属性指定外部脚本的编码。编码也可以由Web服务器指定。''。
因此,我会尝试更改您加载的html源(在相应的元标记中)中指定的字符集,以明确指定您使用的是UTF-8。