因此,我有ISO8859-1
编码的文件。我下一个:
InputStreamReader isr = new InputStreamReader(new FileInputStream(fileLocation));
System.out.println(isr.getEncoding());
然后我得到UTF8
...看起来像FileInputStream
或InputStreamReader
将其转换为UTF8
。
是的,我知道下一种方法:
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileLocation), "ISO-8859-1");
但是我事先不知道文件将采用哪种编码方式。
如何使用保存的编码读取文件?
答案 0 :(得分:2)
不幸的是,二进制文件(字节)实际上是某些字节编码的文本,但是没有将编码(字符集)存储在某个地方。
有时在某处有一种编码:Unicode文本在文件的开头可以有一个可选的BOM字符。 HTML和XML可以指定字符集。
如果您是从互联网上的标题行下载文件的,则可能会提到字符集。假设它是一个HTML文件,并且为Content-Type: text/html; charset=Windows-1251
。然后,您可以使用Windows-1251读取文件,并始终将其存储为UTF-8,并修改/添加<meta charset="UTF-8">
。
但是一般来说,没有确定某些文件编码的解决方案。您可以这样做:
可能有一个图书馆在做这样的事情;结合了语言识别和字符集识别。