【问题标题】:Scanner fails to work with files containing Cyrillic characters扫描仪无法处理包含西里尔字符的文件
【发布时间】:2014-02-03 16:16:48
【问题描述】:

我正在尝试使用 Scanner 类来解析文本文件。但事实证明,如果文件包含俄语单词,扫描仪根本无法读取该文件。 scanner.hasNextLine() 在第一次调用时返回 false。 这是 Scanner 类的正常行为吗?我可以做些什么来解决这个问题吗?

【问题讨论】:

  • 使用接受字符集名称并提供包含西里尔字符的适当字符集的重载构造函数之一。
  • @SotiriosDelimanolis 你想比一个答案吗?
  • @Duncan Nah,把它拿走。我还没有验证任何内容。

标签: java parsing cyrillic


【解决方案1】:

要读取包含另一种编码的文本,您应该使用带有附加参数“encoding”的 Scanner 的构造函数。例如,如果包含俄罗斯符号的文件采用 UTF-8 编码,请尝试以下操作:

String path = ... // full path of file
Scanner sc = new Scanner(new FileInputStream(path), "UTF-8");

//read file line by line
while (sc.hasNextLine()){
    //read one line
    String s = sc.nextLine();
    //do something with line
    System.out.println(s);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2019-07-23
    • 2014-03-04
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多