
一下
如
(fs[0]
==
0xEF
&&
fs[1]
==
0xBB
&&
fs[2]
==
0xBF)
是UTF-8的
文本文档,有的带有BOM(ByteOrderMark,字节序标志),即0xEF,0xBB,0xBF,有的没有。
Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。
在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。
对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。
而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
java课程设计例子
Java如何获取文件编码格式
1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。
按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文 *** 作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:
File file = new File(path);
InputStream in= new javaioFileInputStream(file);
byte[] b = new byte[3];
inread(b);
inclose();
if (b[0] == -17 && b[1] == -69 && b[2] == -65)
Systemoutprintln(filegetName() + ":编码为UTF-8");
else
Systemoutprintln(filegetName() + ":可能是GBK,也可能是其他编码");
2:若想实现更复杂的文件编码检测,可以使用一个开源项目cpdetector,它所在的网址是:>
以上就是关于java怎么获取txt文件编码格式全部的内容,包括:java怎么获取txt文件编码格式、怎么辨别文本文档的编码、java 怎么获得文件编码格式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)