March 16, 2007

downthemall!0.9.9.7(2007-03-16)修改版, 解决汉字乱码(firefox扩展)

      在firefox的扩展中有一个downthemall! 可以实现多线程下载, 下载过程可控, 极大的增强了firefox自带的下载功能。 但downthemall!是国外的朋友开放的, 对这个东亚字符的乱码问题没有考虑在里面, 所以在下载中文的文件中很多时候会出现乱码的情况, 让人感觉很不爽。

      本人也是一个菜鸟, 但苦于受这个害, 没办法奋起学之, 东拼西凑, 经过一天的努力, 终于将这个乱码的问题解决, 解决的不算完美, 但可以接受。

      修改之后的downthemall! 不会在下载面板中出现的dtaoneclick下的路径中的中文乱码。 同时下载的文件名也不会出现乱码, 可以识别所有的编码并进行转换, 彻底解决乱码问题, 不过有一点小问题, 就是在下载的时候窗口中显示的还是乱码, 但下载下来的文件是不会有乱码的, 而且重新打开dta的管理器, 文件名也不会出现乱码, 我还没有找到这个窗口中的刷新是在哪里修改的. 继续努力中…..

      修改后的downthemall! 可以在这里下载。 http://www.newsmth.net/att.php?p.792.39079.984.xpi

××××××××××××××××××××××××××××××××××××××××××××××××××××

      本次修改中所修改的的文件有两个, 一个是dta.jar/content/dmoverlay.js, 里面共涉及三处内容的修改

1、增加 this.description = dialog.mLauncher.source.originCharset;  该语句主要用来获得所下载页的编码, 从而为后面的获得正确的解码提供基础。 这个方法来源是mozilla的developer, 地址是这里:http://developer.mozilla.org/en/docs/nsIURI

同时利用了downthemall!的description字段作为编码的存储字段, 用来传递编码, 以便于正确解码。

2、 增加
  var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
      .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  converter.charset = ‘UTF-8′;
  dir = converter.ConvertToUnicode(dir);

这个语句用来修正在下载面板中出现的dta下载路径中的中文字的乱码

3、修改了 DTA_AddingFunctions.saveSingleLink(turbo, this.url, this.referrer, “”);将其修改成DTA_AddingFunctions.saveSingleLink(turbo, this.url, this.referrer, this.description); 将网页编码传递过去。

      另外修改的一个是dta.jar/content/dta/down.js, 里面涉及一处内容的修改, 增加了下面的这个语句

  //start modified by hongfengye 2007-03-14
  var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
      .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  converter.charset = this.description;
  this.fileName = converter.ConvertToUnicode(this.fileName);
  this.destinationName = converter.ConvertToUnicode(this.destinationName);
  //end modified

用来修正下载的文件名, 消除中间的乱码。 我把这个语句加在了moveCompleted : function(fileManager)过程中, 所以乱码修正的时间是在下载完毕的时候修正, 我还没有找到更好的地方进行修正乱码。 尽请原谅

     本来我想在这个扩展提取文件名的地方修正乱码的, 这个是最彻底的, 但我一直找不到一个参数的传递, 而已在最初的时候传递参数, 但从论坛上下载文件的时候, 总是会出现文件名自动修改的方式, 这个方式我没有掌握是一个什么过程, 从而没有找到参数的传递。 从而导致修改不成功, 最后还是放弃了。

      修改这个扩展用到了sunwan修改greasemonkey中用到的代码, 我直接拿来用了, 在此感谢sunwan。

      本人的技术实在太菜, 所以修改的不好, 请各位原谅。

  您喜欢本文吗?即刻订阅"偶爱偶家",精彩文章不再错过!现在就给我们留个话吗?

 

« 绿色版WUD “失约”日偏食 »
6 responses to "downthemall!0.9.9.7(2007-03-16)修改版, 解决汉字乱码(firefox扩展)"
fang5566 said:
2007年03月18日

这么好的文章怎么没人顶呢?太不厚道了!:mrgreen:

[Reply]

scavin said:
2007年05月18日

下不了。。。

发给我一个好吗?这是个好东西

[Reply]

scavin said:
2007年05月18日

还有出 0.9.9.8 版本了,可否在修改一下呢?

期待中。。。

[Reply]

枫叶 said:
2007年05月18日

0.9.9.8已经修改完毕了的, 在这里
http://blog.2i2j.com/being-humble-opinion/downthemall0998-modified-2007-05-10-solve-distortion.html

我已经将修改版发给你, 请注意查收

[Reply]

scavin said:
2007年05月19日

收到了

[Reply]

UGGboots said:
2009年11月24日

http://www.6inchboot.com/

UGG boots;cheap UGG;UGG classic

[Reply]

Leave a comment