bug描述
当用户上传的txt文件,不为utf8,而是比如utf16等其他编码时,会导致无法正常解析。
修复方案
核心是分辨txt文件的编码格式,采用universalchardet,mozilla推出的一种编码检测工具。
仓库:https://github.com/albfernandez/juniversalchardet
juniversalchardet is a Java port of “universalchardet”, that is the encoding detector library of Mozilla.
1. 导包
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>juniversalchardet</artifactId>
<version>2.4.0</version>
</dependency>
2. 读取文件
// File file = 用户上传的txt文件;
try {
reader = ReaderFactory.createBufferedReader(file);
BufferedReader bufferedReader = new BufferedReader(reader);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
list.add(lineTxt);
}
} finally {
if (reader != null) {
reader.close();
}
}