1

我正在使用扫描仪从文本文件中读取一些基本文件。

前 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 位单元使用 little-endian 顺序,则字节序列将0xFF后跟0xFE. 此序列在文本显示中显示为 ISO-8859-1 字符ÿþ,文本显示为 ISO-8859-1。

您必须在构建Scanner.

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