阅读:2997回复:0
刚刚修复了GreaseMonkey0.6.4(firefox1.5)的一个BUG!
从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格式。 |
|
|