Filename encoding in Apache Commons Net FTPClient

2019-03-24 17:55发布

问题:

I have to upload a file to an FTP server. The filename contains special letters, say äöü. On the FTP server, I need the filename to be UTF-8 encoded.

My code is like this:

import org.apache.commons.net.ftp.FTPClient;

FTPClient client = new FTPClient();

...

boolean retval = client.storeFile(fileName, inputStream);

The problem is that after storeFile, the name of the file saved on the FTP server is ISO-8859-1 encoded rather than UTF-8.

How can I tell FTPClient to UTF-8 encode the file names?

回答1:

I have not tested it, but you can try this:

client.setControlEncoding("UTF-8");


回答2:

Since Apache Commons NET 3.0 one can use ftpClient.setAutodetectUTF8( true ); to enable autodetection of UTF-8 support on the FTP server. Like setControlEncoding it must be called before connection.

See the corresponding javadoc.