MLDonkey 下载中文文件乱码解决办法
2005-07-13 09:12
519 查看
MLDonkey [/b]下载中文文件乱码解决办法[/b]
[/b]
[/b]作者:[/b]kongxx
[/b]MLDonkey是目前在Linux上比较流行的Donkey,但是其核心类库不能很好的处理中文,这一点也让很多中国的养驴专业户望而却步,以下是我在使用MLDonkey的过程中处理文件有中文的一个方法,但是此方法只是在文件下载完后执行转换,在下载过程中仍然不能看到中文,这一点我会在以后想办法处理:注意:当前版本只支持在添加文件时将一个中文编码为两个字节的情况。
此方法使用的是Java语言编写的一个类作的处理,代码如下:
将此类中的incoming 改为MLDonkey incoming目录,然后再Linux命令行输入以下命令进行编译和执行。编译#javac MLDonkeyUtil.java执行#java MLDonkeyUtil如果目录下有需要改中文名的文件,此程序会自动转换,并输出转换前后文件的名称。
[/b]
[/b]作者:[/b]kongxx
[/b]MLDonkey是目前在Linux上比较流行的Donkey,但是其核心类库不能很好的处理中文,这一点也让很多中国的养驴专业户望而却步,以下是我在使用MLDonkey的过程中处理文件有中文的一个方法,但是此方法只是在文件下载完后执行转换,在下载过程中仍然不能看到中文,这一点我会在以后想办法处理:注意:当前版本只支持在添加文件时将一个中文编码为两个字节的情况。
此方法使用的是Java语言编写的一个类作的处理,代码如下:
import java.net.*;import java.io.*; public class MLDonkeyUtil { /** * mldonkey文件下载存放路径 */ private String incoming = "/usr/local/mldonkey/incoming"; public static void main(String[] args) throws Exception { MLDonkeyUtil util = new MLDonkeyUtil(); util.convert(); } private void convert() { File dir = new File(incoming); File[] files = dir.listFiles() ; for(int i = 0 ; i < files.length ; i++) { String strDest = convert(files[i].getName()); if(!files[i].getName().equals(strDest)) { print(files[i].getName() + " >>> " + strDest); File fDest = new File(files[i].getParent() + File.separator + strDest); files[i].renameTo(fDest) ; } } } private String convert(String s) { int location = 0; String ret = ""; while(true) { if(location + 8 <= s.length() ) { String subStr = s.substring(location ,location + 8); if(check(subStr)) { ret += "%" + convert2Hex(subStr.substring(1, 4)) + "%" + convert2Hex(subStr.substring(5, 8)); location = location + 8 ; } else { ret += s.substring(location ,location + 1); location = location + 1; } } else { ret += s.substring(location ); break ; } } return URLDecoder.decode(ret) ; } /** * 检查匹配类型(_nnn_nnn) * @param s * @return */ private boolean check(String s) { if(s.length() != 8) { return false ; } if(s.charAt(0) != '_' || s.charAt(4) != '_') { return false ; } if( isNum(s.charAt(1)) && isNum(s.charAt(2)) && isNum(s.charAt(3)) && isNum(s.charAt(5)) && isNum(s.charAt(6)) && isNum(s.charAt(7))) { return true ; } return false ; } private boolean isNum(char c ) { if(c >= 48 && c <= 57) { return true ; } return false ; } private String convert2Hex(String s) { int i = Integer.parseInt(s); if(i < 0 || i > 255) { throw new IllegalArgumentException(); } return Integer.toHexString(i); } private void print(String str) { System.out.println(str); } } |
相关文章推荐
- MLDonkey 下载中文文件乱码解决办法
- 希赛网 > 问答 > 程序开发 > Web开发 > Web前端 > Firefox下载文件中文乱码的一种Server端解决办法 Firefox下载文件中文乱码的一种Server端解决办法
- Struts2文件下载文件名中文出现乱码解决办法
- Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
- firefox 文件下载 中文乱码 解决办法
- 文件下载 response.setHeader()下载中文文件名乱码问题 解决办法
- Struts2文件下载文件名中文出现乱码解决办法
- 文件下载 response.setHeader()下载中文文件名乱码问题 解决办法
- php操作csv文件导入mysql时中文乱码的解决办法
- jsp实现文件下载与中文文件名乱码问题解决
- Java实现文件下载并解决中文文件名乱码
- 解决从数据库下载文件时,中文文件名为乱码的问题!
- [置顶] PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- nodejs 读取文件中文乱码 utf8转gbk解决办法
- linux 中文文件乱码解决办法
- 获取文件上传页面中文数据时乱码问题的解决办法
- 文件下载解决中文乱码
- 下载文件个别浏览器文件名乱码解决办法
- c# web 下载文件(解决中文文件名乱码问题)
- java文件上传与下载(springmvc框架下)及enctype=”multipart/form-date导致的中文乱码的解决