FTP获取中文文件名乱码问题

问题描述:

      在服务器上用FileZilla Server建了个FTP服务器,本机程序中使用 apache.commons.net 包中的 ftp.FTPClient 类上传下载文件,文件上传下载后的文件名的显示都木有问题,就是在程序中使用listNames(),或者listFiles()再获取文件名,中文的文件名就会乱码,就像“???.png”这个样子。

解决方法:

      在网上搜了一通,说是编码不匹配,要获取文件名之后,用name=new String(name.getBytes("UTF-8"),"GBK");这样的方式,当然并不一定就是这两种编码,顺序也不一定。但是尝试了之后,还是没用。

      后来终于找到了一个解释清楚的:http://lioncn.blog.51cto.com/1557898/432835;原因是服务器端字符集和客户端字符集不匹配,FileZilla Server默认使用utf-8,而我们的操作系统一般都是中文的,默认字符集是gbk,因此就不行了。有建议使用FileZilla Server的某个特殊版或者打补丁,最简便的方法是给ftp服务器发送一个命令“opts utf8 off”,就一切ok了。

      在客户端上测试可行,但是程序当中怎么做呢,调用FTPClient的doCommand("opts", "utf8 off");即可,注意检查是否执行成功,调用之前要先登录哦。


你可能感兴趣的:(计算平台)