1

私は 3 日以上同じ問題に取り組んできましたが、自分のコードの何が問題なのかわかりません。

私のプログラムでは、QWebViewウィンドウを使用して HTML コンテンツを表しています。この HTML コンテンツは、ユーザー設定に基づいてオンザフライで生成されます。QXmlStreamWriterHTMLファイルを生成するために使用します。QXmlStreamが必要なQIODeviceので、 を作成し、そこにQByteArrayHTML コードを書き込み、最後に から を作成しQStringますQByteArray。このコードを に印刷するとQWebView、特殊記号 (ドイツ語のウムラウトやロシア語の文字など) が正しく表示されません。ただし、生成されたコードを HTML ファイルに保存すると、Firefox が開き、これらの文字が正しく表示されます。

生成された HTML には、<meta http-equiv="Content-Type" content="text/html; charset=utf-8">タグが含まれています。

文字列のコーデックを設定し、文字列をさまざまな形式に変換して、QByteArrayそれ自体で遊んでみました。Qt 4.7.3 を使用しています。MinGW 4.4 を搭載した Windows デスクトップ用。

エンコーディングの話で重要な点を見逃していると思います。何か助けていただければ幸いです! この問題は本当に厄介で、アイデアを完成させるのを妨げています! ありがとうございました!

4

1 に答える 1

2

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();
}

問題の詳細 (コード スニペットとデータ キャプチャ - ソース データのエンコーディングは、あなたが思っているものではないかもしれません) がなければ、これ以上のことはできません。

于 2011-05-16T06:50:58.163 に答える