Java Scanner无法读取带重音符号的单词

时间:2014-04-15 09:04:27

标签: java java.util.scanner

我的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

2 个答案:

答案 0 :(得分:4)

通过定义应使用的字符集构建扫描程序:

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

我认为ASCII是Scanner的默认字符集,因此需要进行更改。此文件也可能不以UTF-8编码。

答案 1 :(得分:0)

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

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