0

UTF-8 文字セットに少し問題があります。読み込んで分析したい UTF-8 でエンコードされたファイルがあります。BufferedReader を使用して、ファイルを 1 行ずつ読み取っています。

BufferedReader buffReader = new BufferedReader(new InputStreamReader
(new FileInputStream(file),"UTF-8"));

私の問題は、Java の法線文字列メソッド (trim() と equals() など) が、BufferedReader のすべてのコンテンツを読み取るために作成したループのすべての反復で、BufferReader から読み取られた行で使用するのに適していないことです。 . たとえば、エンコードされたファイルには< menu >、プログラムにそのまま処理してもらいたいものがありますが、今のところ、?? < m e n u >他の奇妙な文字が混在しているように見えます。すべての文字セットコード化を削除してプレーンテキストのみを保持する方法があるかどうかを知りたいので、String クラスのすべてのメソッドを複雑にせずに使用できます。ありがとうございました

4

1 に答える 1

0

jdk が古すぎない場合 (1.5)、次のように実行できます。

Locale frLocale = new Locale("fr", "FR");
Scanner scanner = new Scanner(new FileInputStream(file), "UTF-8");
scanner.useLocale(frLocale);

for (; scanner.hasNextLine(); numLine++) {
 line = scanner.nextLine();
}

スキャナーは、空白以外の区切り文字も使用できます。この例では、文字列からいくつかの項目を読み取ります。

         String input = "1 fish 2 fish red fish blue fish";
         Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
         System.out.println(s.nextInt());
         System.out.println(s.nextInt());
         System.out.println(s.next());
         System.out.println(s.next());
         s.close(); 

prints the following output:

         1
         2
         red
         blue 

ここでスキャナのドキュメントを参照してください

于 2011-05-18T14:07:33.330 に答える