我有一个带有奇怪编码“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