如何读取编码未知的文本文件?

How to read textfiles with unknown encoding?

我想读取几个文本文件(例如CSV),但我不知道编码。

由于文本文件可能包含变音符号等特殊字符,因此选择正确的编码似乎至关重要。

new BufferedReader(new InputStreamReader(resource.getInputStream(), encoding));

我尝试使用 ISO_8859_1 进行阅读,但使用编码的变音符号无法正常工作。所以我尝试了 UTF-8,效果很好。

但我不知道将来这是否也会导致不同文件的问题。而且我从来没有读过文件编码的文件。

那么我应该如何最好地读取编码未知的文件?

你必须知道编码,不知道就无法正确读取文件。由于 UTF-8 有效,请继续使用它。如果他们将继续以 UTF-8 格式生成文件,还要与文件的制作者核实。他们应该记录这一点。

不可能以编程方式识别文本文件的编码。唯一的方法是尝试在不同编码的文本编辑器中打开它,直到你可以阅读文本

严格来说,其他两个答案是正确的 - 您只需要知道什么编码是可以保证的。但是,有一些库可以让您对编码进行有根据的猜测。例如,查看 ICU4J or jchardet