2012-01-31 50 views
1

我製作了一個讀取不同文本文件的程序,並將其組合成一個.csv文件。它是一個.csv文件,翻譯成英文,荷蘭文,法文,意大利文,葡萄牙文和西班牙文。Java讀取來自不同語言的字符串的文件

現在,這裏是我的問題:

最後我得到一個很好的填充.csv文件與所有的翻譯作品。我用UTF-8讀取文件,除了法文之外,所有語言都顯示正確。有些字符會顯示爲這樣的問號:「Mis?jour」,它應該是「Misàjour」。

這裏是讀取與不同語言的不同文件,並從他們身上,使物體的方法,這樣我就可以對它們進行排序恩把它們放在正確的位置.csv文件

的文件都寫滿這樣的:

到機場; A L'Aéroport酒店

今天; Aujourd'hui

public static Language getTranslations(String inputFileName) { 
    Language language = new Language(); 

    FileInputStream fstream; 
    try { 
     fstream = new FileInputStream(inputFileName); 

     // Get the object of DataInputStream 
     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inputFileName), "UTF-8")); 
     String strLine; 
     //Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 
      // Print the content on the console 
      String[] values = strLine.split(";"); 
      if(values.length == 2) { 
       language.putTranslationItem(values[0], values[1]); 
      } 
    } 

     //Close the input stream 
    in.close(); 

    } catch (FileNotFoundException e) { 
    } catch (IOException e) { 
    } 

    return language; 
} 

我希望有人能幫幫忙啊!

感謝

+1

你是否檢查過包含法文文件的文件是否真的被正確讀取?也許來自這些文件的輸入已經被破壞(錯誤的編碼或其他)。 – 2012-01-31 10:56:32

+0

是的,文字是正確的。在Eclipse上閱讀時發生錯誤 – Fergers 2012-01-31 10:58:10

+1

不清楚這裏有什麼問題。上面的代碼是用問號讀取字符串還是它是包含問號的CSV文件?你確定該文件是UTF-8編碼?我的猜測是,事實並非如此。 (注意:你的代碼應該是固定的,不要忽略異常,不要打開無用的流,並且總是在最後的塊中關閉它們) – 2012-01-31 11:04:22

回答

0

我不能完全肯定這一點,但你可以嘗試將這些值轉換[0]和值[1]串入的bytearray

byte[] value_0_utfString = values[0].getBytes("UTF-8") ; 
byte[] value_1_utfString = values[1].getBytes("UTF-8") ; 

,然後將其轉換回成串

str_0 = new String(value_0_utfString ,"UTF-8") ; 
str_1 = new String(value_1_utfString ,"UTF-8") ; 

不知道這是正確的/優化的方式,但由於單個線包括英語和法語的,我想分裂和編碼也許會有幫助,我的天堂我自己試了一下

+0

我試了一下,但不幸的是,這並沒有解決問題。 – Fergers 2012-01-31 11:43:41

相關問題