我有一個帶有奇怪編碼「UCS-2 Little Endian」的文本文件,我想用Java讀取它的內容。閱讀任何具有奇怪編碼的文本文件?
正如你可以在上面的截圖中看到文件的內容出現在記事本++很好,但是當我使用此代碼讀它,只是垃圾被打印在控制檯:
String textFilePath = "c:\strange_file_encoding.txt"
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF8"));
String line = "";
while ((line = reader.readLine()) != null) {
System.out.println(line); // Prints garbage characters
}
重點是用戶選擇要讀取的文件,因此它可以是任何編碼,並且由於我無法檢測到文件編碼,我使用「UTF8」對其進行解碼,但是如上例所示,它無法正確讀取。
有沒有正確的方式閱讀這些奇怪的文件?或者至少我可以檢測到我的代碼是否會讀取不正確?
非常感謝。正如我的問題所述,主要問題是這不是唯一使用的文本文件。用戶選擇要讀取的文件,並且它可以有任何編碼,那麼「UTF-16LE」會讀取任何具有任何編碼的文本文件嗎? – Brad 2013-03-19 22:41:11
有沒有一個絕對的方式,但給這個鏡頭:[juniversalchardet](https://code.google.com/p/juniversalchardet/) – tempoc 2013-03-19 22:51:38