【问题标题】:Reading from a file Russian characters(javaSE) [duplicate]从文件中读取俄语字符(javaSE)[重复]
【发布时间】:2015-04-01 17:25:05
【问题描述】:

以下代码完美适用于具有英文内容的文件,但不适用于俄语内容。如何让它也适用于俄语?

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: 非常感谢您的回答

【问题讨论】:

  • 我的第一个猜测是commandString 值的代码页与文件内容的代码页不匹配。您可能应该提供更多信息,例如示例数据。
  • 文件使用什么字符编码?

标签: java regex bufferedreader


【解决方案1】:

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

改为使用

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

【讨论】:

  • 我试着写:这只适用于该行包含一个单词然后输出,例如:“привет” 如果一行包含多个单词则不输出,例如“привет как дела” new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251"))
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 2016-07-10
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多