2016-03-18 4 views
0

У меня есть файл, который имеет следующую строку:использование SmbFileInputStream для чтения данных в UTF-8 кодирования

Vol conforme à la réglementation 

Однако, когда я прочитал файл, используя SmbFileInputStream я получаю:

Vol conforme � la r�glementation 

МОГ пожалуйста, сообщите мне, как лучше всего прочитать этот файл, чтобы я получил строку, как в исходном файле. Я конвертирую его в utf-8, и я не уверен, что это правильный путь. Вот текущий код, который я использую:

SmbFileInputStream smbFileInputStream = new SmbFileInputStream(fileURL); 
BufferedReader bufferedFileReader = new BufferedReader(new InputStreamReader(smbFileInputStream, "UTF-8")); 
    String line = null; 
    StringBuilder stringBuilder = new StringBuilder(); 

    try { 
     while ((line = bufferedFileReader.readLine()) != null) { 
      if (!line.trim().isEmpty()) { 
       stringBuilder.append(line); 
      } 
     } 
     return stringBuilder.toString(); 
    } finally { 
     bufferedFileReader.close(); 
    } 
+0

Ваш код подходит для чтения файла с помощью кодировки utf-8. реальный вопрос заключается в том, что такое _actual_ кодировка файла. – jtahlborn

+0

'InputStreamReader (smbFileInputStream," UTF-8 ")' должен декодировать кодированный файл UTF-8. Из-за того, что это было повреждено, я подозреваю, что файл не кодируется в кодировке UTF-8, или вы печатаете с использованием неправильной кодировки. Как вы проверяете выход? –

+0

Это хорошая точка ... первая строка в файле говорит: Homeuyer

ответ

0

Ваш файл не кодируется в кодировке UTF-8. Основываясь на выходе испеченной строки, возможно, это ISO-8859-1 или Windows cp1252, или даже ISO-8859-15.

Вы должны передать эти кодировки. Не будет очевидным, чтобы узнать, какую из этих кодировок использовать до тех пор, пока ваши данные не содержат байт, который отображает не тот символ.

Символ Евро - хороший тест. Он не существует в ISO-8859-1 и находится в разных положениях карты в cp1252 и ISO-8859-15.

Notepad ++ - замечательный инструмент для быстрой проверки файлов с различными декодированием.

+0

Большое вам спасибо за помощь! ISO-8859-1 работал для меня. Я сделаю некоторое регрессионное тестирование, как вы предложили. – Homeuyer

 Смежные вопросы

  • Нет связанных вопросов^_^