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吗?
您的文件使用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)