Java Scanner更改字符串

pra*_*432 1 java file-io java.util.scanner

我正在使用Scanner从文本文件中读取一些基本文件.

前5个条目是这个 -

 0 MR2Spyder
1 Tundra
3 Echo
3 Yaris
4 ScionxB
4 ScionxD
Run Code Online (Sandbox Code Playgroud)

我正常实例化扫描仪,然后执行此操作 -

String line = scanner.nextLine();
System.out.println(line);
Run Code Online (Sandbox Code Playgroud)

然后我得到这个输出 -

ÿþ0 M R 2 S p y d e r 
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义 - Scanner类有问题吗?我应该使用BufferedReader吗?

old*_*inb 5

您的文件使用UTF-16编码...字符和标题之间的空格ÿþ表示 - 它是字节顺序标记.看到这里:

如果16位单元使用little-endian顺序,则字节序列将0xFF跟随0xFE.此序列ÿþ在文本显示中显示为ISO-8859-1字符,期望文本为ISO-8859-1.

您必须在构建时指定Scanner.

final Scanner scanner = new Scanner(file, "UTF-16");
Run Code Online (Sandbox Code Playgroud)