「java判断字符集」java判断字符串

博主:adminadmin 2023-03-21 18:09:06 640

今天给各位分享java判断字符集的知识,其中也会对java判断字符串进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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]==-17b[1]==-69b[2]==-65)

System.out.println(f.getName()+"编码为UTF-8");

else System.out.println(f.getName()+"可能是GBK");

}catch(Exception e){

e.printStackTrace();

}

java 怎么判断编码是utf-8 还是gbk

你是要判断字符还是判断文件的编码,若是字符:

String str="123456";

String type = "utf-8"; //更换这里进行其他编码判断

try {

if (str.equals(new String(str.getBytes(type ), type ))) {

return type;

}

} catch (Exception e) {

}

如果是文件,麻烦一些,可以使用一个开源项目cpdetector,这个我也没用过,你自己查一下吧

几种判断字符集编码的方法(Java) 未完

如果是Java的String对象的话,则一定是Unicode的,这个没有为什么,Java就是这么定的。

我猜你的问题应该是如何判断一段字节流是什么编码类型,对吗?比如一个文件,或是网络上面取下来的一段Byte数组,你需要用一个合适的编码来解析成字符串。

这个让你失望了,没有一个文档化的,确定的方法来判断,只能用测试的方法,这个方法也只是猜测,不能百分百的确定,方法如下:

用常见的编码方式对字节流进行解码,比如Unicode,UTF8, UTF8 without BOM, UTF16, ANSI等等。

对解析的结果进行判断,是不是一个合理的可打印字符,可打印字符最多的解码方式就是最可能的编码了。

如何判断可打印字符?流程如下:把解析好的字符串按照字符进行遍历,把每一个字符转化成Unicode编码,看看这些编码是不是Unicode的支持范围极客。

如果发现有种编码方式都是可打印字符,那么再使用本步骤:对字符串进行分词,分词这个在此不作赘述,你自己再研究一下。分词效果好的就是最可能的编码了。(不过通常到第三步就能搞定了,第四部绝大部分用不着)

java判断字符集的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java判断字符串、java判断字符集的信息别忘了在本站进行查找喔。