2012-08-08 84 views
1

我正在使用掃描儀從文本文件中讀取一些基本文件。Java掃描器更改字符串

第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嗎?

+3

看起來你有編碼問題。使用正確編碼的掃描器構造函數。 – Keppil 2012-08-08 22:44:32

+2

您正在使用Unicode文件編碼。指定。 – oldrinb 2012-08-08 22:44:36

回答

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"); 
+0

@ praks5432因爲你在這裏看起來更新,請不要忘記標記答案[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),這有助於大部分在解決問題。 – oldrinb 2012-08-15 05:28:18