我有一个存储在文件中的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_CACHE
和LOAD_FLAGS_CHARSET_CHANGE
,但这似乎没有任何效果。我也检查了自动检测被关闭了,所以这也不是问题。将<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
添加到文档似乎已经解决了这个问题,但我希望使用loadURIWithFlags
的'charset'参数应该工作得很好,所以我想知道如果我在最初的尝试中做了错误的事情。
好主意!我想我没有意识到有一个UTF-8 BOM这样的东西 - 我认为它只用于像UTF-16这样的编码,每个字符总是使用至少两个字节。维基百科来拯救! (我已经添加了一个链接到你的答案。) – MatrixFrog 2010-08-13 16:50:18