vsftp乱码问题解决

一、问题现象:Android端用Java写的代码,将本地文件通过FTP上传到vsftp服务器,文件名中的中文显示乱码。

二、问题定位:

1)首先要知道,FTP传输协议中,默认编码方式为ISO-8856-1。不管本地中文编码采用什么方式,最终上传到FTP前,必须要统一转成ISO-8856-1,这样FTP服务器才能正常还原出原来的编码方式。

2)客户端编码方式要和服务器的编码方式完全一致。比如服务器一般都是设置为UTF-8来支持中文,那么客户端也要使用UTF-8。

3)使用FileZilla客户端,查看对应FTP服务器字符集设置

    然后用FileZilla直接连接下,注意控制台窗口中的打印信息,

注意,不同的vsftp,对于UTF8命令支持情况不同。vsftp V2.X版本是支持的,但到了vsftp V3.X就不支持了。因此强烈建议不要使用网上普遍说的,根据FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON")的返回值来判断是否设置本地编码为UTF-8。正确的做法是,将服务器的编码方式直接设置为UTF-8,然后强制客户端侧使用UTF-8。

三、解决办法:

1、将服务器的编码方式直接设置为UTF-8。具体不展开,网上查查即可。

2、文件名编码方式:filename = new String(filename.getBytes(“UTF-8”),“ISO-8856-1”);

3、ftpClient.setControlEncoding(LOCAL_CHARSET);

4、FileZilla客户端,字符集强制使用UTF-8。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值