我有一个带有奇怪编码“UCS-2 Little Endian”的文本文件,我想使用 Java 读取它的内容。
正如您在上面的屏幕截图中看到的,文件内容在 Notepad++ 中看起来很好,但是当我使用这段代码阅读它时,控制台中只会打印垃圾:
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”对其进行解码,但如上例所示,它无法正确读取.
有没有以正确的方式阅读这些奇怪的文件?或者至少我可以检测到我的代码是否无法正确读取?