Я использую последнюю Apache Commons Net для использования FTP-функций.Загрузить файл, содержащий латинские символы
Моя цель - загрузить CSV-файлы (на основе;), которые могут содержать латинские символы, такие как ñ, á или Ú. Дело в том, что когда я загружаю их на FTP-сервер, эти символы преобразуются в другой.
следующая строка:
12345678A; Inigo; ПЕРЕС; ХИМЕНЕС, X
преобразуется в это:
12345678A; IÃ'IGO; PÃ ‰ REZ; JIMÃ ‰ NEZ; X
Мой код кажется чем-то вроде что:
// pFile is passed as parameter to the current method
InputStream is = new FileInputStream(pFile);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setControlEncoding("UTF-8");
if (ftp.storeFile("some\\path", is)) {
is.close();
...
}
Я выкопал несколько часов, чтобы найти решение (я думал setFileType() и/или setControlEncoding() будет работать), но нет ...
Я пытался печати на стандартный вывод (экран, с logger и System.out), и я понял, что это InputStream, который не читает эти символы. Executing следующий код напечатанный указанные символы в правильном направлении:
InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(isr);
String line = null;
while((line = in.readLine()) != null){
System.out.print(line);
logger.debug(line);
}
in.close();
isr.close();
Но как сказать FTP клиент или storeFile(), чтобы использовать UTF-8?
Спасибо всем.
Как вы получили значения из загруженного файла? Вы пытались загрузить его и проверить через локальный просмотр? – Andremoniy
Файл, который я хочу загрузить, является локальным. Проблема в том, что формат кодировки этого файла - UTF-8 и ISO-8859-1 сервера. – russellhoff