定义QWebElement的`toPlainText()`的字符编码

时间:2011-11-29 11:48:42

标签: qt character-encoding qtwebkit

在处理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()会显示相同的编码问题。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用QString的***()函数来查找toPlainText()返回的字符串是如何编码的?

文档说明

  

使用此方法时,除非另有说明,否则WebKit会假定JavaScript程序或样式表等外部资源以UTF-8编码。例如,可以通过HTML脚本标记的charset属性指定外部脚本的编码。编码也可以由Web服务器指定。''。

因此,我会尝试更改您加载的html源(在相应的元标记中)中指定的字符集,以明确指定您使用的是UTF-8。