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");即可,注意检查是否执行成功,调用之前要先登录哦。


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值