在用Visual Studio 2008编写Firefox控件时遇到一个问题,调用GetStringFromName()总是返回以下错误
----------------------------------------------------------------------------------------
错误: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIStringBundle.GetStringFromName]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://xtaddons/content/savepages.js :: onBrowseCmd :: line 6" data: no]
----------------------------------------------------------------------------------------
重新检查了源码若干遍,无果。搜索了一下GOOGLE,得解。
<h1>规则:如果你要编写基于Gecko的应用程序或Firefox扩展,请注意将所有源文件保存成不带签名的UTF-8/CodePage65001。</h1>
尤其是包含非英文语言字符的文件,如.property, .dtd, ...
在我的机子上,Visual Studio 2008把含中文字符一个.property文件保存成了GB18030编码,造成了Firefox/Gecko无法识别。我将编码选为“Unicode(UTF-8无签名)-代码页65001”后保存这个文件,问题得解。
UTF-8签名是指文件开头的EF BB BF三个字节,这三个字节对于Gecko来说是不可以见到的。