如何使用扫描仪以正确的方式从文件中读取重音字符?

时间:2018-03-09 10:05:44

标签: java character-encoding

我有这个方法:

 public static void readFile(String input)
    throws FileNotFoundException, IOException{
        try (Scanner sc = new Scanner(new File(input));){

            while (sc.hasNextLine()){
                String currentLine = sc.nextLine();
                if(sc.hasNextLine()){
                    String nextLine = sc.nextLine();

                    System.out.println("currentLine\t"+currentLine);
                    System.out.println("nextLine\t"+nextLine);
                }
            }
         }
    }

它正常工作,没有任何错误或任何问题,但这不会写入文件中的任何内容。在文件中我有一些基本的“lorem ipsum”文本,只是为了看看它是如何工作的。 如果在文件中只有拉丁字符,那么这是正常的,但如果有任何其他字符(例如:áéűőúüöó),那么这不会写入文件中的任何内容。我在哪里可以遇到这个问题?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你可能只有一行,而且错误就在这里:

            while (sc.hasNextLine()){
                String currentLine = sc.nextLine();
                if(sc.hasNextLine()){

您获得当前行但仅在下一行时打印它。 这样就会丢失最后一行。

请删除IF条件。

编辑: 问题编辑后,请尝试为UTF8提供正确的编码:

new Scanner(new File(fileName), StandardCharsets.UTF_8.name());