我必須將文件上傳到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