我必须将文件上传到FTP服务器。文件名包含特殊字母,例如äöü
。在FTP服务器上,我需要文件名为UTF-8编码。Apache Commons Net中的文件名编码FTPClient
我的代码是这样的:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
的问题是,storeFile
后,保存在FTP服务器上的文件的名称是ISO-8859-1编码,而不是UTF-8。
我怎么能告诉FTPClient
UTF-8编码的文件名?
我会说你正在寻找错误的地方,这可能是在FTP服务器上的配置... – Marcelo 2012-03-02 15:36:26
不一定。原来的FTP协议规范根本不支持Unicode。为了通过FTP连接使用UTF-8,双方必须首先同意使用它。服务器必须在FEAT命令中报告它甚至支持UTF-8(参见RFC 2640,尽管不是所有的服务器都支持该规范)。某些服务器要求客户端发送非标准的'OPTS UTF8 ON'或'OPTS UTF-8 NLST'命令来激活UTF-8。这就是1M的问题 - FTPClient支持什么,服务器支持什么?我会使用一个数据包嗅探器,比如WareShark来观察FTP流量并查看。 – 2012-03-08 01:58:28