类 EncodingDetectUtil
java.lang.Object
com.agentsflex.core.file2text.util.EncodingDetectUtil
工业级编码检测工具类(支持流式读取大文件,自动识别编码并返回 Reader)
特性:
- 支持 PushbackInputStream,避免依赖 mark/reset
- 支持 UTF-8, UTF-16LE/BE, UTF-32LE/BE BOM 检测
- ICU4J 异常降级处理,默认回退 UTF-8
- 支持自定义置信度阈值
- 编码名称标准化
- 返回的 Reader 关闭时会级联关闭底层 InputStream
使用示例:
try (Reader reader = EncodingDetectUtil.getAutoDetectReader(inputStream)) {
BufferedReader br = new BufferedReader(reader);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
调用方必须关闭返回的 Reader,以释放底层 InputStream。
-
字段概要
字段修饰符和类型字段说明private static final intprivate static final int -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明private static StringdetectBom(byte[] bytes, int length) BOM 检测(含 UTF-8/16/32)static StringdetectCharset(InputStream inputStream) 自动检测编码(只返回编码名称)private static StringdetectCharsetICU(byte[] bytes, int length, int confidenceThreshold) 使用 ICU4J 检测编码,支持置信度阈值static ReadergetAutoDetectReader(InputStream inputStream) 自动识别 InputStream 编码并返回 Reader(默认置信度阈值 60)static ReadergetAutoDetectReader(InputStream inputStream, int confidenceThreshold) 自动识别 InputStream 编码并返回 Reader,可自定义置信度阈值static StringreadToString(InputStream inputStream) 自动读取 InputStream 为文本
-
字段详细资料
-
构造器详细资料
-
EncodingDetectUtil
private EncodingDetectUtil()
-
-
方法详细资料
-
readToString
自动读取 InputStream 为文本- 参数:
inputStream- 待读取流- 返回:
- 完整文本
- 抛出:
IOException- IO 异常
-
getAutoDetectReader
自动识别 InputStream 编码并返回 Reader(默认置信度阈值 60)- 参数:
inputStream- 待检测流- 返回:
- 自动识别编码的 Reader
- 抛出:
IOException- IO 异常
-
getAutoDetectReader
public static Reader getAutoDetectReader(InputStream inputStream, int confidenceThreshold) throws IOException 自动识别 InputStream 编码并返回 Reader,可自定义置信度阈值- 参数:
inputStream- 待检测流confidenceThreshold- ICU4J 检测置信度阈值(0-100)- 返回:
- 自动识别编码的 Reader
- 抛出:
IOException- IO 异常
-
detectCharset
自动检测编码(只返回编码名称)- 参数:
inputStream- 待检测流- 返回:
- 编码名称(标准 JVM 名称)
- 抛出:
IOException- IO 异常
-
detectBom
BOM 检测(含 UTF-8/16/32) -
detectCharsetICU
使用 ICU4J 检测编码,支持置信度阈值
-