2015-09-28 85 views
4

我試圖讀法文件內容(字符)和檢查那裏ascii值做一些operation.Everything工作正常,包含英文字母,但對於像字符àéèé,我正面臨一些問題。從java/android中的文本文件讀法語單詞問題

例如,如果我的文件內容是français,我會得到一個輸出爲franais。 在這裏,我附上我的代碼,請看看並指導我解決這個問題。

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

那麼如何將文本文件編碼?看起來你應該使用帶有正確編碼(可能是UTF-8)的'InputStreamReader',並且每次只讀一行。請注意,ASCII不包含任何重音字符。另外,請在將來更加努力地格式化您的源代碼。 –

+0

檢查這個鏈接,是關於閱讀UTF-8文件:http://www.mkyong.com/java/how-to-read-utf-8-encoded-data-from-a-file-java/ – Jure

+0

是的我的用UTF-8編碼的文本文件。 –

回答

4

你應該使用InputStreamReaderUTF8編碼:

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

我建議你使用Apache下議院IO庫。隨着一行代碼就可以讀取你的文件中的所有行,然後處理它們在for循環:在build.gradle

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

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

您可以添加:

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