Кодировка имени файла в Apache Commons Net FTPClient - PullRequest
13 голосов
/ 02 марта 2012

Я должен загрузить файл на FTP-сервер. Имя файла содержит специальные буквы, скажем äöü. На FTP-сервере мне нужно, чтобы имя файла было в кодировке UTF-8.

Мой код такой:

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 кодировал имена файлов?

Ответы [ 2 ]

27 голосов
/ 27 марта 2012

Я не проверял, но вы можете попробовать это :

client.setControlEncoding("UTF-8");
6 голосов
/ 30 ноября 2015

Начиная с Apache Commons NET 3.0 можно использовать ftpClient.setAutodetectUTF8( true );, чтобы включить автоопределение поддержки UTF-8 на FTP-сервере.Как и setControlEncoding, он должен быть вызван перед подключением.

См. Соответствующий javadoc .

...