2012-01-31 51 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

相关问题