首页编程java编程java 判断字符串是什么编码,java 判断字符串什么编码类型

java 判断字符串是什么编码,java 判断字符串什么编码类型

编程之家2023-10-1397次浏览

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

java 判断字符串是什么编码,java 判断字符串什么编码类型

技术问题:java中如何判断字符串内容是否是一种编码格式

可以看下java.nio.charset.Charset这个类,这个类里面有个静态方法:

public static boolean isSupported(String charsetName)通知是否支持指定的 charset。

参数:

java 判断字符串是什么编码,java 判断字符串什么编码类型

charsetName-请求的 charset名称;可能是规范名称或别名

返回:

当且仅当当前 Java虚拟机支持指定的 charset时才返回 true

java 判断字符串是什么编码,java 判断字符串什么编码类型

抛出:

IllegalCharsetNameException-如果给定的 charset名称是非法的

IllegalArgumentException-如果给定的 charsetName为 null

拿这个静态方法判断并捕捉异常,如果是true那就是正确的,否则就是false

Java中如何查看字符串是什么字符集

判断java字符串的字符集有多种方法,我们一一讨论如下:

1、通过把未知编码字符串,用猜想的编码再解码,观察字符串是不是正确还原了。

原理:假如目标编码没有数组中的字符,那么编码会破坏,无法还原。

缺点:假如字符少,而正巧错误的猜想编码中有这种字节,就会出错。

如:new String("tested str".getBytes("enc"),"enc")

2、大多数时候,我们只要判断本地平台编码和utf8,utf8编码相当有规律,所以可以分析是否是utf8,否则使用本地编码。

原理:分析byte[]来判断规律。

缺点:有时,个别本地编码字节在utf8中也会出现,导致出错,需要分析。

如:判断是否utf-8代码:

public static boolean isValidUtf8(byte[] b,int aMaxCount){

int lLen=b.length,lCharCount=0;

for(int i=0;i

byte lByte=b[i++];//to fast operation,++ now, ready for the following for(;;)

if(lByte>=0) continue;//>=0 is normal ascii

if(lByte<(byte)0xc0|| lByte>(byte)0xfd) return false;

int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4

:lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1;

if(i+lCount>lLen) return false;

for(int j=0;j=(byte)0xc0) return false;

}

return true;

java 判断字符串什么编码类型

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

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

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

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

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

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

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

Java: 如何知道一个字符串当前是什么字符集

判断java字符串的字符集有多种方法,我们一一讨论如下:

1、通过把未知编码字符串,用猜想的编码再解码,观察字符串是不是正确还原了。

原理:假如目标编码没有数组中的字符,那么编码会破坏,无法还原。

缺点:假如字符少,而正巧错误的猜想编码中有这种字节,就会出错。

如:new String("tested str".getBytes("enc"),"enc")

2、大多数时候,我们只要判断本地平台编码和utf8,utf8编码相当有规律,所以可以分析是否是utf8,否则使用本地编码。

原理:分析byte[]来判断规律。

缺点:有时,个别本地编码字节在utf8中也会出现,导致出错,需要分析。

如:判断是否utf-8代码:

public static boolean isValidUtf8(byte[] b,int aMaxCount){

int lLen=b.length,lCharCount=0;

for(int i=0;i

byte lByte=b[i++];//to fast operation,++ now, ready for the following for(;;)

if(lByte>=0) continue;//>=0 is normal ascii

if(lByte<(byte)0xc0|| lByte>(byte)0xfd) return false;

int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4

:lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1;

if(i+lCount>lLen) return false;

for(int j=0;j=(byte)0xc0) return false;

}

return true;

}

3.按编码规则,一字字比照。

优点是错物更少,缺点是太费资源。

关于java 判断字符串是什么编码的内容到此结束,希望对大家有所帮助。

java主要是做什么的?JAVA主要是用来干什么的女人不坏 女人不坏电视剧免费观看