public static String get_charset( File file ) {
String charset = "GBK";
byte[] first3Bytes = new byte[3];
try {
boolean checked = false;
BufferedInputStream bis = new BufferedInputStream( new FileInputStream( file ) );
bis.mark( 0 );
int read = bis.read( first3Bytes, 0, 3 );
if ( read == -1 ) return charset;
if ( first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE ) {
charset = "UTF-16LE";
checked = true;
}else if ( first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF ) {
charset = "UTF-16BE";
checked = true;
}else if ( first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF ) {
charset = "UTF-8";
checked = true;
}
bis.reset();
if ( !checked ) {
// int len = 0;
int loc = 0;
while ( (read = bis.read()) != -1 ) {
loc++;
if ( read >= 0xF0 ) break;
if ( 0x80 <= read && read <= 0xBF ) // 单独出现BF以下的,也算是GBK
break;
if ( 0xC0 <= read && read <= 0xDF ) {
read = bis.read();
if ( 0x80 <= read && read <= 0xBF ) // 双字节 (0xC0 - 0xDF) (0x80
// - 0xBF),也可能在GB编码内
continue;
else break;
}
else if ( 0xE0 <= read && read <= 0xEF ) {// 也有可能出错,但是几率较小
read = bis.read();
if ( 0x80 <= read && read <= 0xBF ) {
read = bis.read();
if ( 0x80 <= read && read <= 0xBF ) {
charset = "UTF-8";
break;
}
else break;
}
else break;
}
}
//System.out.println( loc + " " + Integer.toHexString( read ) );
}
bis.close();
} catch ( Exception e ) {
e.printStackTrace();
}
return charset;
}
分享到:
相关推荐
利用第三方开源包cpdetector获取文件编码格式
java 识别文件的编码格式 读取文件的编码 utf-8 gbk gb2312 java 编码 java 获取文件编码格式 java 乱码查找
NULL 博文链接:https://summerbell.iteye.com/blog/543318
java获取文件原始编码,
如果很多时候我们没有约定好文件格式,我们就难以读取文件内容,此时,我们就需要一个工具来探测所读文本的编码格式,此工具可以允许用户读取诸如utf-8,gbk,gb2312一类的文件格式。内置了一些常用的探测实现类,...
java工具jar文件 获取文件的编码格式 例如UTF-8,GBK,UTF-16,GB2312等等
主要介绍了详解Java如何获取文件编码格式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本工程用于研究如何使用Java代码获取文件、文件流或字符串的编码方式 本工程编码方式:UTF-8 开发工具:MyEclipse 参考博客:http://blog.csdn.net/gaohuanjie/article/details/43735891
代码工具类,可以用java代码区分文本文档的编码,非常实用
利用chardet,cpdetector包获取文件格式,并判断文件类型是否带BOM
读取与创建CSV文件,根据第三方jar包自动解析文件编码方式,相关jar包与使用说明
做项目时总结的,java程序获取文件编码方式的两种最常用的方式(1.cpdetector第三方jar包,包含源码elipse项目;2.EncodingDetect.java工具类)。
Java字符编码及获取文件编码
这是一个获取文本的工具类,支持utf8,gbk等等格式的编码。对应位置编码格式的文件使用该工具类便可以获取文件工具类
EncodingDetect.java,java自动获取文件的编码,智能识别文件编码,支持本地file及指定url的编码识别,支持多达40余种编码的识别,包括最常见的UTF-8,GBK,GB2312,BIG5,UNICODE,ISO8859_1,ASCII等,FileUtil....
java 取文件的编码格式 例如UTF-8,GBK,UTF-16,GB2312等等 java 取文件的编码格式 例如UTF-8,GBK,UTF-16,GB2312等等 java 取文件的编码格式 例如UTF-8,GBK,UTF-16,GB2312等等
Java cpdetector获取文件编码格式所需Jar包, 请参照博客进行配置 https://blog.csdn.net/xll_csdn/article/details/109079207
一个判断文件为utf-8的java类,自己用有限状态机实现的,很好用的。
JAVA自动获取文件的编码工具类,使用方法:EncodingDetect.getJavaEncode(String,filePath)