如何读取不是ASCII文件?

时间:2014-07-30 13:04:34

标签: java encoding

我有一个带有西里尔符号的txt文件。这就是我的阅读方式:

        String csvFile = "C:\\Users\\dolgopolov.a\\Desktop\\Список рассылки 14 07 2014.txt";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = "\t";

        try {

            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {

                // use comma as separator
                String[] country = line.split(cvsSplitBy);

                System.out.println("Номер: " + country[0]
                        + " , Сообщение: " + country[1] + "");

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

但输出很奇怪:

Номер: 9047120386 , Сообщение: ��������� �������! �� ����� ����� ������� ������������� � ������� 2,98   ���., ������� ���������� �������� � ������� 3 ����

那么,我该如何避免呢?我是否必须更改编码类型?

2 个答案:

答案 0 :(得分:3)

FileReader使用默认编码,因此您必须使用InputStreamReader

new InputStreamReader(new FileInputStream(filePath), encoding)

答案 1 :(得分:1)

StreamReader sr = new StreamReader(stream,Encoding.Unicode);

string converted = Encoding.BigEndianUnicode.GetString(dataArray); dataArray在哪里是你的字节数组