Java 如何读取非ASCII文件?

Java 如何读取非ASCII文件?,java,encoding,Java,Encoding,我有一个带有西里尔字母符号的txt文件。我是这样读的: String csvFile = "C:\\Users\\dolgopolov.a\\Desktop\\Список рассылки 14 07 2014.txt"; BufferedReader br = null; String line = ""; String cvsSplitBy = "\t"; try { br = ne

我有一个带有西里尔字母符号的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();
                }
            }
        }
但输出是wierd:

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

那么,我怎样才能避免这种情况呢?是否必须更改编码类型或其他内容?

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


新的InputStreamReader(新的FileInputStream(filePath),编码)
FileReader
使用默认编码,因此您必须使用
InputStreamReader


new-InputStreamReader(新文件输入流(filePath),编码)
StreamReader sr=new-StreamReader(stream,encoding.Unicode)


转换的字符串=Encoding.bigendianucode.GetString(dataArray);其中dataArray是您的字节数组

StreamReader sr=newstreamreader(stream,Encoding.Unicode)


转换的字符串=Encoding.bigendianucode.GetString(dataArray);其中dataArray是您的字节数组

是的,您应该将编码设置为UTF-8并重试。请注意,文件中包含的字符并不重要。您必须始终知道用于放置它们的字符集和编码。是的,您应该将编码设置为UTF-8并重试。看,文件中包含的字符并不重要。您必须始终知道用于将它们放在那里的字符集和编码。我已经这样做了
br=new BufferedReader(new InputStreamReader(new FileInputStream(csvFile),“UTF-8”)可能是编码。。。试试“Cp1251”或“Cp866”,我已经这样做了
br=new BufferedReader(新的InputStreamReader(新的文件InputStream(csvFile),“UTF-8”)可能是编码。。。试试“Cp1251”或“Cp866”,问题被标记,问题中的代码是Java。问题被标记,问题中的代码是Java。