【问题标题】:Why is loadURIWithFlags not using the charset that I'm passing to it?为什么 loadURIWithFlags 不使用我传递给它的字符集?
【发布时间】:2010-08-14 00:50:48
【问题描述】:

我有一个 HTML 文档存储在一个文件中,采用 UTF-8 编码,我希望我的扩展程序在浏览器中显示这个文件,所以我调用 loadURIWithFlags('file://' + file.path, flags, null, 'UTF-8', null);,但它会将其加载为 ISO-8859-1 UTF-8 的。 (我可以看出,因为在 View>Character Encoding 菜单上选择了 ISO-8859-1,并且因为不间断空格字符显示为 Â 后跟一个空格。如果我使用字符编码菜单,然后一切正常。)

我尝试在标志中包含LOAD_FLAGS_BYPASS_CACHELOAD_FLAGS_CHARSET_CHANGE,但这似乎没有任何效果。我还检查了自动检测是否已关闭,所以这也不是问题。在文档中添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 似乎已经解决了这个问题,但我希望使用loadURIWithFlags 的'charset' 参数应该也能正常工作,所以我想知道我在最初的尝试中是否做错了什么。

【问题讨论】:

    标签: javascript firefox file-io character-encoding firefox-addon


    【解决方案1】:

    您做对了,唯一的解决方案是在文档中包含编码信息,因为如果您仅依赖 HTTP 标头,那么当文档保存在磁盘上时,您将无法加载文档(因为没有类似文件头)。

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

    【讨论】:

    • 好主意!我想我没有意识到有 UTF-8 BOM 这样的东西——我认为它只适用于像 UTF-16 这样的编码,每个字符至少使用两个字节。维基百科来拯救! (我已经添加了指向您答案的链接。)
    猜你喜欢
    • 2017-05-26
    • 2023-03-16
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2021-09-29
    相关资源
    最近更新 更多