MLDonkey 下载中文文件乱码解决办法
来源:互联网 发布:cf领枪手机软件 编辑:程序博客网 时间:2024/04/29 21:46
MLDonkey 下载中文文件乱码解决办法
作者:kongxx
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);
}
}
将此类中的incoming 改为MLDonkey incoming目录,然后再Linux命令行输入以下命令进行编译和执行。
编译
#javac MLDonkeyUtil.java
执行
#java MLDonkeyUtil
如果目录下有需要改中文名的文件,此程序会自动转换,并输出转换前后文件的名称。
- MLDonkey 下载中文文件乱码解决办法
- Python处理MLDonkey 下载中文文件乱码问题
- Python处理MLDonkey 下载中文文件乱码问题 (2)
- 文件下载 response.setHeader()下载中文文件名乱码问题 解决办法
- Struts2文件下载文件名中文出现乱码解决办法
- 文件下载中文乱码
- linux 中文文件乱码解决办法
- 文件下载中文乱码问题
- 文件下载中文文件名乱码
- 文件下载解决中文乱码
- 下载中文文件乱码问题
- 文件下载中文乱码解决
- SpringMVC文件下载中文乱码
- 希赛网 > 问答 > 程序开发 > Web开发 > Web前端 > Firefox下载文件中文乱码的一种Server端解决办法 Firefox下载文件中文乱码的一种Server端解决办法
- Content-Disposition 文件上传、下载 中文乱码 HTTP头 解决办法 Java Jersey
- jsp包含html文件中文乱码解决办法
- *.ftl文件中文乱码的解决办法:
- IDEA国际化文件中文乱码的解决办法
- 用.NET发起web请求时维持Session的方法
- 拥有微软Windows CE的实时系统zz
- How is Windows Mobile related to Windows CE?(zz)
- c++中文件操作的5中基本途径
- C#实现根据域名查询ip实例(原创)
- MLDonkey 下载中文文件乱码解决办法
- 防火墙--网络大典
- 供电公司业扩工程项目管理(原创)
- 本Blog已迁移到新的地址
- 身份证复印件的正确使用方法
- 为了记住那段美好的往事
- 检测到指定的WEB服务器运行的不是ASP.NET 1.1版,您无法运行ASP.NET应用程序或服务和创建ASP.NET程序时候发生错误 HTTP/1.0 500 Server Error的解决方法
- Lesson 1.01 JDK的安装和配置
- 纯粹随笔