Qt:QWebView和QByteArray导致编码冲突

| 我已经在同一个问题上待了三天了,但我无法弄清楚我的代码出了什么问题。 在我的程序中,我使用“ 0”窗口表示HTML内容。这些HTML内容是根据用户设置即时生成的。我使用ѭ1来生成HTML文件。
QXmlStream
需要一个
QIODevice
,因此我创建了
QByteArray
,并向其中编写HTML代码,最后我在
QByteArray
中创建了
QString
。当我在ѭ0中打印此代码时,它无法正确显示特殊符号(例如德语Umlauts或俄语字母)。但是,如果我将生成的代码保存到HTML文件,则Firefox打开会正确显示这些字符。 生成的HTML包含“ 8”标记。 我已经尝试过为字符串设置编解码器,并将字符串转换为不同的格式,然后在
QByteArray
本身上播放。我使用Qt 4.7.3。适用于具有MinGW 4.4的Windows桌面。 我想,我缺少编码方面的重要内容,我将不胜感激!这个问题真的很烦人,这使我无法完成自己的想法!谢谢!     
已邀请:
QXmlStreamWriter
可以很好地直接写入
QString
(因为它是在Qt 4.3中引入的),而无需增加额外的机会以
QByteArray
来使编码错误。 例如。这个(简单的)代码片段工作得很好(源文件以UTF-8编码):
#include <QXmlStreamWriter>
#include <QApplication>
#include <QWebView>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QString bytes;
    QXmlStreamWriter xs(&bytes);

    xs.writeDTD(\"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Strict//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\\\">\");
    xs.writeStartElement(\"html\");
    xs.writeStartElement(\"body\");
    xs.writeTextElement(\"h1\", QString::fromUtf8(\"éëè абвгдеёж 漢字\"));
    xs.writeEndElement();
    xs.writeEndElement();

    QWebView w;
    w.setHtml(bytes);
    w.show();
    return app.exec();
}
如果没有更多有关您的问题的详细信息(代码段和数据捕获-您的源数据编码可能不是您想的那样),那么将无济于事。     

要回复问题请先登录注册