2015-11-11 2 views
0

Я использую последнюю 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?

Спасибо всем.

+2

Как вы получили значения из загруженного файла? Вы пытались загрузить его и проверить через локальный просмотр? – Andremoniy

+0

Файл, который я хочу загрузить, является локальным. Проблема в том, что формат кодировки этого файла - UTF-8 и ISO-8859-1 сервера. – russellhoff

ответ

1

Извините, но у меня есть ответ.

Когда я сказал вам, что я вижу, трансформируются некоторые символы

12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X 

Я имела в виду, что эти символы были видны на клиентском приложении FTP (я использую WinSCP). Проблема в том, что была выбрана кодировка символов по умолчанию, а не UTF-8-

Теперь, после ее реализации, я выбираю правильную кодировку (UTF-8), и текст кажется хорошо сформированным.

Благодарим за помощь.