QWebView :: setHtml的预期编码是什么?

时间:2013-02-20 18:13:28

标签: qt unicode encoding utf-8 qwebview

我发现了一个我不明白的奇怪效果:我有一个用UTF-8编码的HTML文件。它还有一个带content="text/html; charset=UTF-8"/>的元元素。

如果我在QWebView中加载HTML文件,它会正确显示。

如果我在QByteArray中加载HTML文件(看起来仍然看起来像有效的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。

3 个答案:

答案 0 :(得分:1)

没有预期的编码,因为在创建QString时,文本应该已经被解码为16位unicode。你可以正确地做到这一点,但如果你使用QString(const QByteArray&)构造函数,那么Qt默认将内容视为ASCII。

如果您想将内容视为UTF-8,则可以使用QString::fromUtf8。如果您需要做一些更复杂的事情,可以使用QTextCodec来阅读许多不同的编码。

答案 1 :(得分:0)

为了解决这个问题,我迭代了很多案例,但确实如此:

QTextCodec来:: setCodecForCStrings(QTextCodec来:: codecForName( “UTF8”));

因为QtWebKit在self中使用转换为std :: string。

答案 2 :(得分:0)

我使用了setContent(bytearray,“text / html; charset = utf-8”)并且它有效。 “utf-8”应为小写。