【问题标题】:Scanner does not scan some letters in textfile扫描仪不扫描文本文件中的某些字母
【发布时间】:2014-10-02 09:49:53
【问题描述】:

我在使用扫描仪扫描我的文本文件时遇到问题。当我使用此代码时,我的输出看起来像这样。文本为捷克语,有些字母无法识别。知道问题出在哪里吗?

代码:

public static void main(String[] args) throws FileNotFoundException, IOException {

         File file = new File("C:/Users/Trend0226/" 
                        + "Documents/NetBeansProjects/ScreensTransition/"
                        + "src/guessword_text/Uvod_text.txt");


         Scanner sc = new Scanner(new BufferedReader(new FileReader(file)));

         while(sc.hasNextLine()) {
         String text = sc.nextLine();
             System.out.println(text);
         }

         sc.close();
}

输出:

    V�tejte ve h�e GuessWord

**************************** 视频 ********************** *

C�lem hry je uhodnout slovo。 Kdy� hr�� uhodne slavo z.sk.v. 1000 K.。 Nejvy... ��stku, kterou m�� hr�� vyhr�t je 10 000 K�。 K dispozici jsou 3 n.pov.dy, kter. hr. m'e vyu't. Zda-li hr�� neuhodne prvn� slovo,t�m pro n�go hra skon�ila。 Hr�� m� kdykoliv pr�vo ukon�it hru a odn�st si svoji odm�nu。

******************** Upozorn� ********************

Hr�� 必须 b�t star�� 18-ti let, jinak se nemée z��astnit t�to hry

【问题讨论】:

    标签: java java.util.scanner bufferedreader filereader


    【解决方案1】:

    使用带有字符集的重载构造函数:

    Scanner sc = new Scanner(new BufferedReader(new FileReader(file)), "UTF-8");

    【讨论】:

    • 请注意编码可能不是UTF-8,请使用好的编码
    • 是的,我使用了 UTF-8,因为它是一个很好的包罗万象的方法,能够捕获大量与其他特定编码重叠的字符。
    • 当我把UTF-8放在代码中时,IDe不接受它。
    • IDE 是怎么说的?确保将其传递给 Scanner 构造函数,而不是 FileReader 或 BufferedReader 构造函数。
    • 我按照你的例子做了,它写给我,没有找到适合扫描仪的构造器
    【解决方案2】:

    使用

    Scanner sc = new Scanner(file, "Windows-1250");
    

    FileReader 是一个使用默认平台编码的旧实用程序类。不可移植,仅适用于本地文件。也可以使用 InputStreamReader。

    我认为,Windows 上的捷克语使用代码页 1250。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多