我發現了一個奇怪的效果,我不明白:我有一個用UTF-8編碼的HTML文件。它也有一個元素content="text/html; charset=UTF-8"/>
。QWebView :: setHtml的預期編碼是什麼?
如果我在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。
啊,謝謝!我對QString中的utf-8與unicode編碼感到困惑。我其實嘗試過QTextCodec,看它是否有所作爲,但不正確地使用它。一切都更清晰的第二天;) – Christian 2013-02-21 10:20:46
我認爲混淆的根源是,加載文件時從元標記中取出編碼,但從QString設置時假定是16位unicode,所以基本上charset = ...被忽略。 – Christian 2013-02-21 10:30:48