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

时间:2015-02-02 17:26:54

标签: java regex bufferedreader

以下代码适用于具有完整英语内容但不包含俄语内容的文件。如何使其适用于俄罗斯?

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++;
        }

    }

UPD:

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

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

p.s:非常感谢答案

2 个答案:

答案 0 :(得分:2)

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

改为使用

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

答案 1 :(得分:0)

使用以下方法读取任何语言的任何文件的文件内容。 我创建了一个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();
    }