我有一个包含奇怪编码“UCS-2 Little Endian”的文本文件,我想使用Java读取它的内容。
如上面的截图所示,在Notepad++中该文件的内容看起来很好,但是当我使用以下代码去读取时,控制台只打印出垃圾字符:
主要问题是用户选择读取的文件可以是任何编码,因为我无法检测文件编码,所以我使用"UTF8"进行解码,但与上面的示例一样,它无法正确读取。是否有方法以正确的方式读取这些奇怪的文件?或者至少可以检测到我的代码将无法正确读取它吗?
如上面的截图所示,在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"进行解码,但与上面的示例一样,它无法正确读取。是否有方法以正确的方式读取这些奇怪的文件?或者至少可以检测到我的代码将无法正确读取它吗?