import cn.hutool.core.util.CharsetUtil;
/**
* 检测文件的字符集
* @param fileLocal
* @return
*/
private File checkFileCharset(File fileLocal) {
if(fileLocal.exists()) {
//上传的文件字符集
String fileCharset = LocalCharsetUtil.getFileCharset(fileLocal);
//系统字符集编码
String systemCharset = CharsetUtil.defaultCharsetName();
if (StrUtil.isNotEmpty(fileCharset) && !systemCharset.equals(fileCharset)) {
fileLocal = CharsetUtil.convert(fileLocal, Charset.forName(fileCharset), Charset.forName(systemCharset));
}
}
return fileLocal;
}
public class LocalCharsetUtil {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";
/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** 8 位 UCS 转换格式 */
public static final String UTF_8 = "UTF-8";
/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";
/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
public static final String UTF_16LE = "UTF-16LE";
/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";
/** 中文超大字符集 */
public static final String GBK = "GBK";
/**
* 将字符编码转换成US-ASCII码
*/
public String toASCII(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, US_ASCII);
}
/**
* 将字符编码转换成ISO-8859-1码
*/
public String toISO_8859_1(String str) throws U
简记 检测文件的字符集
最新推荐文章于 2024-08-02 20:36:52 发布
本文简要记录了如何在Java中检测文件的字符集。通过使用Java的内置API,可以分析文件的字节顺序标记(BOM)或者通过检测模式来识别文件的编码类型。
摘要由CSDN通过智能技术生成