首先,不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下:
ANSI: 无格式定义;
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
知道了各种编码格式的区别,写代码就容易了.
-
publicstaticStringget_charset(Filefile){
-
Stringcharset="GBK";
-
byte[]first3Bytes=newbyte[3];
-
try{
-
boolean;
-
BufferedInputStreambis=newBufferedInputStream(newFileInputStream(file));
-
bis.mark(0);
-
intread=bis.read(first3Bytes,0,3);
-
if(read==-1)returncharset;
-
if(first3Bytes[0]==(byte)0xFF&&first3Bytes[1]==(byte)0xFE){
-
charset="UTF-16LE";
-
checked=true;
-
}
-
elseif(first3Bytes[0]==(byte)0xFE&&first3Bytes[1]==(byte)0xFF){
-
charset="UTF-16BE";
-
checked=true;
-
}
-
elseif(first3Bytes[0]==(byte)0xEF&&first3Bytes[1]==(byte)0xBB&&first3Bytes[2]==(byte)0xBF){
-
charset="UTF-8";
-
checked=true;
-
}
-
bis.reset();
-
if(!checked){
-
-
intloc=0;
-
-
while((read=bis.read())!=-1){
-
loc++;
-
if(read>=0xF0)break;
-
if(0x80<=read&&read<=0xBF)
-
break;
-
if(0xC0<=read&&read<=0xDF){
-
read=bis.read();
-
if(0x80<=read&&read<=0xBF)
-
-
continue;
-
elsebreak;
-
}
-
elseif(0xE0<=read&&read<=0xEF){
-
read=bis.read();
-
if(0x80<=read&&read<=0xBF){
-
read=bis.read();
-
if(0x80<=read&&read<=0xBF){
-
charset="UTF-8";
-
break;
-
}
-
elsebreak;
-
}
-
elsebreak;
-
}
-
}
-
-
}
-
-
bis.close();
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
-
returncharset;
- }
其中File也可以修改成String ,因为FileInputStream支持FILE类型和String类型,String 为文件的绝对路径
分享到:
相关推荐
Java判断文件的编码, 适用于utf-8和gbk码的判断。
它的类库很小,只有500K左右,利用该类库判定文本文件的代码如下(由于cpdetector的算法使用概率统计,所以结果并不是100%准确的,但是是迄今为止我见过
文件上传时,可以用java判断文件编码,jar包和java代码。有问题加Q280764207
java判断文件编码格式 三方工具包 cpdetector_1.0.10.jar
通用的文件字符编码集判断需要借助第三方包...使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段代码供测试~~
这个文档教你如何,判读不同的文件编码类型,gbk,utf-8等等
利用chardet,cpdetector包获取文件格式,并判断文件类型是否带BOM
java判断文件编码或文本流编码的方法宣贯.pdf
j a v a 判 断 编 码 方 式,
读取与创建CSV文件,根据第三方jar包自动解析文件编码方式,相关jar包与使用说明
如果很多时候我们没有约定好文件格式,我们就难以读取文件内容,此时,我们就需要一个工具来探测所读文本的编码格式,此工具可以允许用户读取诸如utf-8,gbk,gb2312一类的文件格式。内置了一些常用的探测实现类,...
java工具jar文件 获取文件的编码格式 例如UTF-8,GBK,UTF-16,GB2312等等
一个判断文件为utf-8的java类,自己用有限状态机实现的,很好用的。
Java自动识别文件字符编码工具类 参考博客 https://blog.csdn.net/superbeyone/article/details/103036914 使用方式: String encode = EncodingDetect.getFileEncode(geoJsonFile); log.info("系统检测到文件[ {}...
java 解析csv文件例子,csv文件 中文乱码问题
getFileCharsetSimple : 简单获取文件编码格式 getFileLines : 获取文件行数 getDirSize : 获取目录大小 getFileSize : 获取文件大小 getDirLength : 获取目录长度 getFileLength : 获取文件长度 getFileMD5 : 获取...
java 字符集编码转换,时间格式化,数字判断等,java文件
通过流的编码能够判断字符编码,例子只是给出文件的编码判断,字符可以自己扩展
通过cpdetector这个开源的jar包可以自动判断当前文件的内容编码,从而在读取的时候选择正确的编码读取,避免乱码问题。 测试结果,提供截图: package com.zuidaima.test; import info.monitorenter....
Java代码中一个解析Txt文本编码的工具类,可以根据指定文件路径判断文本文件的编码格式,相对于简单通过文本长度的判断而言多了更多的判断类型,能够比较准确的判断文本类型,导入即用,比较方便