如何强制Firefox插件charset /编码?

时间:2012-12-17 19:23:33

标签: firefox encoding character-encoding firefox-addon

我遇到了移动插件的问题:它向我展示了通过脚本添加的新元素与页面的不同字符集。例如。我可以读“cuadrúpedo”但我的插件中的同一个词显示“cuadr¡pedo”。

我尝试将下一行写入我的插件的开头,但它不起作用:

document.getElementsByTagName("html")[0].setAttribute("lang", "es");

然后,我编写了一个“转换器函数”,用unicode替换特殊字符,就像下一行一样,但它不起作用。

str.replace( /ú/g, "/xfa־" );

我该怎么办?

2 个答案:

答案 0 :(得分:1)

可能是文本编码的问题。

确保包含文字"cuadrúpedo"的文件保存为utf-8,而不是ansi。

请记住,必须对几个密钥文件进行ansi编码。这些是install.rdfchrome.manifestbootstrap.js。在这种情况下,使用unicode转义符"cuadr\u00fapedo"

答案 1 :(得分:0)

当从chrome:// URL加载JavaScript文件(在Gecko 1.8及更高版本中)时,字节顺序标记用于确定脚本的字符编码。否则,字符编码将与XUL文件使用的编码相同。因此,一种解决方案是HTTP标头可以包含字符编码声明作为Content-Type标头的一部分,例如:

Content-Type: application/javascript; charset=UTF-8

对于跨版本兼容性,您必须将自己限制为ASCII。但是,您可以使用unicode转义 - 使用它们重写的早期示例将是:

var text = "Ein sch\u00F6nes Beispiel eines mehrsprachigen Textes: \u65E5\u672C\u8A9E";

JavaScript和Navigator对UTF-8 / Unicode的支持意味着您可以使用非拉丁语,国际和本地化字符,以及JavaScript程序中的特殊技术符号。 Unicode提供了一种编码多语言文本的标准方法:由于Unicode的UTF-8编码与ASCII兼容,因此程序可以使用ASCII字符。要接收非ASCII字符输入,客户端需要将输入作为Unicode发送。

在Javascript中有一个用于文本转义和转义的网页: http://0xcc.net/jsescape/

来源: https://developer.mozilla.org/en-US/docs/International_characters_in_XUL_JavaScript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode