2015-09-28 4 views
4

Я пытаюсь прочитать содержимое файла на французском языке (символ по символу) и проверять значение ascii для выполнения некоторой операции. Все работает отлично с английским алфавитом, но для символа, подобного Мне кажется, я столкнулся с какой-то проблемой.Проблема при чтении французского слова из текстового файла в java/android

Например, если файл моего файла français, я получаю вывод как franãais. Здесь я прикрепляю свой код, пожалуйста, взгляните и посоветуйте мне, чтобы исправить эту проблему.

File file = new File("C:\text.txt"); 

fis = new BufferedInputStream(new FileInputStream(file)); 

char current; 
char org; 
while (fis.available() > 0) { 
    current = (char) fis.read(); // to read character 
            // from file 
    int ascii = (int) current; // to get ascii for the 
           // character 
    org = (char) (ascii); // to get the actual 
           // character 

    if (ascii == 10) {   
     resultString = resultString.append(",'" 
        + strCompCode + "'"); 
     dbhelpher.addDataRecord(resultString.toString()); 

     resultString.setLength(0); 
    } else if (ascii != 13) { // other than the ascii 
           // 13, the character are 
           // appended with string 
           // builder 
     resultString.append(org); 
    } 
} 
fis.close(); 

Здесь мне нужно прочитать французский символ, как в текстовом файле. Ваш совет будет очень благодарен. Спасибо заранее.

+1

Ну как кодируется текстовый файл? Похоже, вы должны использовать 'InputStreamReader' с правильной кодировкой (возможно, UTF-8) и просто читать строку за раз. Обратите внимание, что ASCII не содержит акцентированных символов. Кроме того, приложите больше усилий для форматирования исходного кода в будущем. –

+0

Проверьте эту ссылку, читайте файлы UTF-8: http://www.mkyong.com/java/how-to-read-utf-8-encoded-data-from-a-file-java/ – Jure

+0

yes my текстовый файл, закодированный с помощью UTF-8. –

ответ

4

Вы должны использовать InputStreamReader с UTF8 кодирования:

InputStreamReader reader = new InputStreamReader(fis, "UTF8"); 

Я предлагаю вам использовать библиотеку Apache Commons IO. С одной строки кода вы можете прочитать все строки из файла, а затем обработать их в for цикле:

List<String> lines = IOUtils.readLines(fis, "UTF8"); 

for (String line: lines) { 
    dbhelper.addDataRecord(line + ",'" + strCompCode + "'"); 
} 

Вы можете добавить его в build.gradle с:

dependencies { 
    ... 
    compile 'commons-io:commons-io:2.4' 
    ... 
}