我发现了一个我不明白的奇怪效果:我有一个用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。
答案 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”应为小写。