在处理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()
或QWebElement::toInnerXml()
会显示相同的编码问题。
答案 0 :(得分:1)
您是否尝试过使用QString的***()函数来查找toPlainText()返回的字符串是如何编码的?
文档说明
使用此方法时,除非另有说明,否则WebKit会假定JavaScript程序或样式表等外部资源以UTF-8编码。例如,可以通过HTML脚本标记的charset属性指定外部脚本的编码。编码也可以由Web服务器指定。''。
因此,我会尝试更改您加载的html源(在相应的元标记中)中指定的字符集,以明确指定您使用的是UTF-8。