从文件中读取俄语字符(javaSE)

Reading from a file Russian characters(javaSE)

以下代码适用于具有英文内容但不适用于俄文内容的文件。如何使其也适用于俄语?

try(BufferedReader fileOut = new BufferedReader(new FileReader(file))){

        for(String line; (line = fileOut.readLine()) != null; ){
            if(line.contains(commandString)) 
                System.out.println(count + ": " + line);
            count++;
        }

    }

更新:

我试着写:只有当一行包含一个词然后输出时才有效,例如:“привет”如果一行包含多个词则没有输出,例如“привет как дела”

 new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251"))

p.s: 非常感谢解答

您需要指定编码才能读取俄语字符。不要使用 FileReader,因为它将使用默认平台编码。

改为使用

new BufferedReader(new InputStreamReader(fileDir), "UTF8");

使用以下方法读取任何语言的任何文件的文件内容。 我做了一个FileUtil.java,这个方法是其中的一部分。它方便且效果很好...

工作代码的关键是charset:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))

整个方法如下:

public static String getFileContent(File file) throws IOException
    {
        StringBuilder sb = new StringBuilder();
        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))) {

            String sCurrentLine;

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
                sb.append(sCurrentLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }