2012-12-17 26 views
-1

我在使用移動插件時遇到了麻煩:它向我展示了使用不同的頁面字符集腳本添加的新元素。例如。我可以閱讀「cuadrúpedo」,但我的插件中顯示的同一個詞「cuadrÂped」。如何強制Firefox插件字符集/編碼?

我tryed寫在下一行到我的插件的開始,但它沒有工作:

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

於是,我寫了一個「轉換器功能」,它使用Unicode替換特殊字符,如下一行,但它沒有奏效。

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

我該怎麼辦?

+0

你能張貼您的擴展做什麼一些代碼? – paa

+0

這是一個簡單的插件測試。它只在頁面中插入一個帶有「cuadrúpedo」字樣的框。 – gal007

回答

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和瀏覽器支持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

1

可能是文本編碼問題。

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

請記住,一些關鍵文件必須進行ansi編碼。這些是install.rdf,chrome.manifestbootstrap.js。在這種情況下,使用unicode轉義碼"cuadr\u00fapedo"