我们一般常用的编码格式是UTF-8,其实有utf-8和utf-8 bom两种格式,utf-8 bom格式是在文件开头加了0xEF, 0xBB, 0xBF三个字节。一般情况用户在使用excel填写数据后生成的csv都是utf-8 bom格式,这就造成了读取时很容易产生数据乱码的情况。
解决方法是使用apache commons io提供的BOMInputStream:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
代码
reader = new BufferedReader(new InputStreamReader(new BOMInputStream(new FileInputStream(file))));