Java使用不同语言的字符串读取文件

时间:2012-01-31 10:52:40

标签: java encoding csv

我创建了一个程序来读取不同的文本文件并将其组合成.csv文件。它是一个.csv文件,翻译成英语,荷兰语,法语,意大利语,葡萄牙语和西班牙语。

现在这是我的问题:

最后,我得到一个很好的填充.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;
}

我希望有人可以提供帮助!

由于

2 个答案:

答案 0 :(得分: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") ;

不确定这是否是正确/优化的方式,但由于单行包括英语和法语,我认为拆分和编码可能有所帮助,我自己没有尝试过

答案 1 :(得分:0)

通过在任何文本编辑器(例如记事本)中单击“另存为”来保存文本文件,并将编码类型更改为ANSI而不是UTF-8。