sunwan
火狐狸
火狐狸
  • UID9953
  • 注册日期2005-11-20
  • 最后登录2009-07-27
  • 发帖数105
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:2744回复:0

刚刚修复了GreaseMonkey0.6.4(firefox1.5)的一个BUG!

楼主#
更多 发布于:2005-12-05 00:34
从GreaseMonkey0.6.x开始,若脚本中含有非ASCII字符,则一般都会发生错误,停止script的执行。今天下了个0.6.4的,发现它安装时保存script用的是"@mozilla.org/network/file-output-stream;1"classes,这个classes对含有非ASCII字符流保存的结果是不正确的。因此改了一下,把它保存为UTF-8格式。
原来content中scriptdownloader.js中的一段代码:
....
  try {
    var targetFile = getTempFile();
    var writeStream = getWriteStream(targetFile);
				
    writeStream.write(source, source.length); 
    writeStream.close();
    ...

改成以下:
...
  try {
    var targetFile = getTempFile();
    var writeStream = getWriteStream(targetFile);
	
	// Added by sunwan --------- save scripts to UTF-8
	var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
            .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
	converter.charset = 'UTF-8';
	
	var convSource = converter.ConvertFromUnicode(source);
	
	writeStream.write("\u00EF\u00BB\u00BF",3);
	writeStream.write(convSource, convSource.length);
	
	var fin = converter.Finish();
		if (fin.length > 0)
			writeStream.write(fin, fin.length);
	// end added
				
    //writeStream.write(source, source.length);   	// removed by sunwan
    writeStream.close();
    ...

彻底杜绝了脚本中有中文字符产生错误(0.5.3的不会)!
当然脚本中有中文字符时事先得保存为UTF-8格式。
附件名称/大小 下载次数 最后更新
greasemonkey-0.6.4.xpi (38KB)  552 2005-12-05 00:34
游客

返回顶部