A4 - bug - 上传自定义词书的编码问题

黄鹏宇 343 2022-10-11

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();
   }
}