导航:首页 > 净水问答 > java过滤bom头

java过滤bom头

发布时间:2024-11-24 21:06:46

㈠ Java 按行读取UTF-8文件,开头第一行总会有一个不可见字符

这个是叫做BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。
没有BOM 则表示是默认的ASCII
BOM主要用途是给类似txt sublimetext notepad 之类的ide看的 让它们能够知道用哪种编码显示里面的内容

㈡ java判断文件编码格式 怎么判断编码格式

UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即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。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的此册规律进行判断了。
UTF-8是一种多森拿宏字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
System.out.println(f.getName()+"编码为UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}

阅读全文

与java过滤bom头相关的资料

热点内容
小区污水管道物业多少时间通一次 浏览:885
反渗透膜能用臭氧混合水消毒吗 浏览:108
含甲醛的废水排水管用什么材质的 浏览:389
废水多少度可以排除 浏览:552
ro反渗透膜怎么区分净水和废水口 浏览:961
春兰净水器质量怎么样 浏览:26
废水cod大几万怎么处理 浏览:706
到污水厂参观都可以参观什么 浏览:319
雨水净化器是什么原理 浏览:776
深圳过滤棉生产厂家 浏览:530
净水技术员干什么的 浏览:683
水处理简单图纸下载 浏览:977
无阀过滤器石英砂厚度 浏览:961
小米空气净化器2电源板坏了怎么维修 浏览:308
饮水机的额定功率多少v 浏览:645
空气净净化器什么牌子好 浏览:56
五个滤芯净水器滤芯拧不开怎么办 浏览:558
净水器显示125怎么没有了 浏览:261
污水管与废水管共用反味怎么办 浏览:5
净水器小阀门怎么拆卸 浏览:909