【发布时间】:2019-03-04 09:52:58
【问题描述】:
在处理 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() 显示相同的编码问题。
【问题讨论】:
标签: qt character-encoding qtwebkit