1

理解できない奇妙な現象を発見しました: UTF-8 でエンコードされた HTML ファイルがあります。を含むメタ要素もありcontent="text/html; charset=UTF-8"/>ます。

QWebView で HTML ファイルを読み込むと、正しく表示されます。

HTML ファイルを QByteArray にロードし (有効な UTF-8 のように見えます)、それを QString に変換し (有効な UTF-8 のように見えます)、QWebView で setHTML を介してこれを設定すると、正しく表示されません (まるでASCII として解釈されます)。

同じ QByteArray を取得し、QWebView の setContent を介して設定し、「text/html; charset=UTF-8」を MIME タイプとして渡すと、再び正しく表示されます。

QWebView::setHtml の予想されるエンコーディングは何ですか? ドキュメントには、外部 CSS およびスクリプト ファイルが UTF-8 として解釈されることのみが記載されています。これは Qt 4.8.2 を使用しています。

4

3 に答える 3

1

を作成したときにテキストがすでに16ビットUnicodeにデコードされているはずなので、予期されるエンコーディングはありませんQString。これを正しく行うのはあなた次第ですが、QString(const QByteArray&)コンストラクターを使用した場合、QtはデフォルトでコンテンツをASCIIとして扱います。

コンテンツをUTF-8として扱いたい場合は、を使用できますQString::fromUtf8。より洗練された何かをする必要がある場合は、QTextCodec多くの異なるエンコーディングを読み取るために使用できます。

于 2013-02-20T18:27:04.547 に答える
0

この問題を解決するために、私は多くのケースを繰り返しますが、それは本当でした:

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

QtWebKit は自己内で std::string への変換を使用するためです。

于 2013-08-25T11:16:47.543 に答える
0

setContent(bytearray, "text/html; charset=utf-8") を使用しましたが、うまくいきました。「utf-8」は小文字にする必要があります。

于 2014-10-18T00:54:03.560 に答える