【问题标题】:Java Scanner cannot read words with accent markJava Scanner 无法读取带有重音符号的单词
【发布时间】:2014-04-15 09:04:27
【问题描述】:

我的 CODE 有问题。如果我在文件中添加带有重音符号的单词,扫描仪将不会读取它。谢谢您的帮助。

例如,如果文件“names.txt”包含: 约翰 律 无

文件中的单词数为 3

但如果包含: 约翰 律 无

文件中的字数为0

代码是:

    File file=new File("names.txt");
    Scanner skener=new Scanner(file);


    int count=0;

    while(skener.hasNext()){

        aArrayListOfNames.add(skener.next());
        count++;
    }

    skener.close();
    System.out.println("Count is "+count);
    return count;

谢谢大家,问题已解决! :D

【问题讨论】:

标签: java java.util.scanner


【解决方案1】:

通过定义它应该使用的字符集来构造扫描器:

Scanner skener=new Scanner(file,"UTF-8");

我相信 ASCII 是 Scanner 的默认字符集,因此需要更改。此外,该文件可能未以 UTF-8 编码。

【讨论】:

    【解决方案2】:

    我试图得到你的错误,但它对我有用......

    private static void getStrings() throws FileNotFoundException {
        List<String> nameArray = new ArrayList<String>();
        File file = new File("C:\\Users\\XXX\\workspace\\stackoverflowtest1\\src\\stackoverflowtest1\\names.txt");
        Scanner scanner= new Scanner(file);
    
        int count = 0;
    
        while (scanner.hasNext()) {
    
            nameArray.add(scanner.next());
            count++;
        }
    
        scanner.close();
        System.out.println("Count is " + count);
        System.out.println("1 - " + nameArray.get(0));
        System.out.println("2 - " + nameArray.get(1));
        System.out.println("3 - " + nameArray.get(2));
    }
    

    输出:

    Count is 3
    1 - Jóhn
    2 - Lil
    3 - None
    

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 2022-12-14
      • 2010-11-30
      • 2011-08-29
      • 2016-01-03
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多