1

Scanner を使用して、テキスト ファイルから基本的なファイル読み取りを行っています。

最初の 5 つのエントリは次のとおりです。

 0 MR2Spyder
1 Tundra
3 Echo
3 Yaris
4 ScionxB
4 ScionxD

通常どおりスキャナーをインスタンス化してから、これを行います-

String line = scanner.nextLine();
System.out.println(line);

次に、この出力を取得します-

ÿþ0 M R 2 S p y d e r 

私には意味がありません- Scanner クラスに問題がありますか? BufferedReader を使用する必要がありますか?

4

1 に答える 1

6

あなたのファイルはUTF-16を使用してエンコードされています...文字と見出しの間のスペースÿþはそれを示しています-それはバイトオーダーマークです。ここを参照してください:

16 ビット ユニットがリトル エンディアン順を使用する場合、バイト シーケンスの0xFF後に0xFE. このシーケンスÿþは、テキストが ISO-8859-1 であることを期待するテキスト表示で ISO-8859-1 文字として表示されます。

を構築するときにそれを指定Scannerする必要があります。

final Scanner scanner = new Scanner(file, "UTF-16");
于 2012-08-08T22:46:25.673 に答える