簡體   English   中英

Java掃描器無法讀取帶有重音符號的單詞

[英]Java Scanner cannot read words with accent mark

我的代碼有問題。 如果我在文件中添加帶重音符號的單詞,則Scanner不會讀取它。謝謝您的幫助。

例如,如果文件“ names.txt”包含:John Lil無

文件中的單詞數為3

但如果包含:JóhnLil無

文件中的單詞數為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

通過定義應使用的字符集來構造掃描器:

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

我相信ASCII是Scanner的默認字符集,因此需要進行更改。 此外,該文件可能未使用UTF-8編碼。

我試圖得到您的錯誤,但對我有用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM