Я использую почтовую сеть apache 3.5 для загрузки файлов на удаленный FTP-сервер и установки кодировки соединения в UTF-8, как показано ниже, перед тем как открыть соединение.Загрузка файла FTP - имя файла Ошибка кодирования
ftpClient.setAutodetectUTF8(true);
ftpClient.setControlEncoding("UTF-8");
И это та часть, которая отправляет файл
private void uploadFile(byte[] data, String path, String fileName, FTPClient ftpClient) throws IOException {
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
boolean uploadSuccess = ftpClient.storeUniqueFile(fileName, new ByteArrayInputStream(data));
Вот проблема; при отправке файлов, чье имя содержит турецкие символы, файл результатов неправильно указан. Например,
Kimlikş.pdf -> KimlikÅ.pdf
Но если я использую ftp4j, все будет хорошо. Кто-нибудь имел это раньше? Данные несут ярость с моей стороны. Я отслеживал трафик с помощью Microsoft Network Monitor. Вот исходный запрос:
FTP FTP:Request from Port 62642,'STOR KimlikÅ.pdf' {TCP:5879, IPv4:134}
убедитесь, что вы используете соответствующий набор символов повсюду, особенно в удаленной системе. отправка имени UTF-8 из вашего клиента бессмысленно, если удаленная файловая система (скажем) использует win-1252. –
'ftpClient.setCharset (StandardCharsets.UTF_8);' –
@Mark. Я использую тот же набор символов на стороне сервера. –