Java Scanner更改字符串

时间:2012-08-08 22:42:04

标签: java file-io java.util.scanner

我正在使用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吗?

1 个答案:

答案 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");