我正在使用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吗?
答案 0 :(得分:5)
您的文件使用UTF-16编码...字符和标题ÿþ
之间的空格表示 - byte order mark。见here:
如果16位单元使用little-endian顺序,则字节序列将
0xFF
后跟0xFE
。此序列在文本显示中显示为ISO-8859-1字符ÿþ
,期望文本为ISO-8859-1。
您必须specify that when constructing your Scanner
。
final Scanner scanner = new Scanner(file, "UTF-16");