0

我有一个存储在文件中的HTML文档,使用UTF-8编码,我希望我的扩展在浏览器中显示此文件,所以我打电话给loadURIWithFlags('file://' + file.path, flags, null, 'UTF-8', null);,但它将它加载为ISO-8859-1而不是UTF- 8。 (我可以这么说,因为在视图>字符编码菜单中选择了ISO-8859-1,并且因为非空格字符显示为Â后跟一个空格。如果使用字符编码切换到UTF-8菜单,然后一切都看起来正确。)为什么loadURIWithFlags不使用我传递给它的字符集?

我试过在旗帜中包括LOAD_FLAGS_BYPASS_CACHELOAD_FLAGS_CHARSET_CHANGE,但这似乎没有任何效果。我也检查了自动检测被关闭了,所以这也不是问题。将<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />添加到文档似乎已经解决了这个问题,但我希望使用loadURIWithFlags的'charset'参数应该工作得很好,所以我想知道如果我在最初的尝试中做了错误的事情。

回答

1

你做得对,唯一的解决方案是在文档中包含编码信息,因为如果仅仅依赖于HTTP头文件,当文档保存在磁盘上时将无法加载文档(因为没有这种东西作为文件头)。

如果你是保存文件的人,你可以将UTF-8 BOM添加到文件中,以确保它可以被Firefox或其他应用程序正确加载。

+0

好主意!我想我没有意识到有一个UTF-8 BOM这样的东西 - 我认为它只用于像UTF-16这样的编码,每个字符总是使用至少两个字节。维基百科来拯救! (我已经添加了一个链接到你的答案。) – MatrixFrog 2010-08-13 16:50:18

相关问题