我遇到了移动插件的问题:它向我展示了通过脚本添加的新元素与页面的不同字符集。例如。我可以读“cuadrúpedo”但我的插件中的同一个词显示“cuadr¡pedo”。
我尝试将下一行写入我的插件的开头,但它不起作用:
document.getElementsByTagName("html")[0].setAttribute("lang", "es");
然后,我编写了一个“转换器函数”,用unicode替换特殊字符,就像下一行一样,但它不起作用。
str.replace( /ú/g, "/xfa־" );
我该怎么办?
答案 0 :(得分:1)
可能是文本编码的问题。
确保包含文字"cuadrúpedo"
的文件保存为utf-8,而不是ansi。
请记住,必须对几个密钥文件进行ansi编码。这些是install.rdf
,chrome.manifest
和bootstrap.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