「java判断字符串编码」java判断字符串是否乱码

博主:adminadmin 2023-01-05 23:06:10 996

本篇文章给大家谈谈java判断字符串编码,以及java判断字符串是否乱码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

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

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

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

用常见的编码方式对字节流进行解码,比如Unicode,UTF8,

UTF8

without

BOM,

UTF16,

ANSI等等。

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

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

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

怎么 知道 java字符串 编码格式

这样的测试方法是不正确的。getBytes(charset)是解码,new

String(byte[],

charset)是编码。new

String(str.getBytes(charset),charset)是解码再编码,无论charset是什么编码格式,返回的字符串内容原始str是一致,因此equals方法都是返回true,达不到测试字符串编码格式的目的。个人观点:正确的测试姿势应该是这样的:

String charset ="xxx"; //假定编码格式

String str = "中文";

boolean flag = str.equals(new String(str.getBytes(),charset));flag为true则表明str的编码格式是假定的编码格式。其中说明str.getBytes()该方法就是按其自身编码格式去解码。其自身编码格式跟你的操作系统编码格式或你使用的IDE设置的文件的Text

file

encoding有关。

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

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

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

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

用常见的编码方式对字节流进行解码,比如Unicode,UTF8,

UTF8

without

BOM, UTF16,

ANSI等等。

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

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

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

java 如何判断字符串编码格式

java可供判断某字符串是什么编码的一行代码

System.out.println("中文");

        System.out.println("中文".getBytes());

        System.out.println("中文".getBytes("GB2312"));

        System.out.println("中文".getBytes("ISO8859_1"));

        System.out.println(new String("中文".getBytes()));

        System.out.println(new String("中文".getBytes(), "GB2312"));

        System.out.println(new String("中文".getBytes(), "ISO8859_1"));

        System.out.println(new String("中文".getBytes("GB2312")));

        System.out.println(new String("中文".getBytes("GB2312"), "GB2312"));

        System.out.println(new String("中文".getBytes("GB2312"), "ISO8859_1"));

        System.out.println(new String("中文".getBytes("ISO8859_1")));

        System.out.println(new String("中文".getBytes("ISO8859_1"), "GB2312"));

        System.out.println(new String("中文".getBytes("ISO8859_1"), "ISO8859_1"));

        

        eg:判断当前字符串的编码格式。

//判断当前字符串的编码格式

if(destination.equals(new String(destination.getBytes("iso8859-1"), "iso8859-1")))

{

destination=new String(destination.getBytes("iso8859-1"),"utf-8");

}

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

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

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

参数:

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

返回:

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

抛出:

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

IllegalArgumentException - 如果给定的 charsetName 为 null

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

java 中如何查看字符串的编码类型

可以通过以下方法来进行编码格式判断,输入一个字符串,之后返回字符串编码类型。

public static String getEncoding(String str) {

String encode = "GB2312";

try {

if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是GB2312

String s = encode;

return s; //是的话,返回“GB2312“,以下代码同理

}

} catch (Exception exception) {

}

encode = "ISO-8859-1";

try {

if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是ISO-8859-1

String s1 = encode;

return s1;

}

} catch (Exception exception1) {

}

encode = "UTF-8";

try {

if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是UTF-8

String s2 = encode;

return s2;

}

} catch (Exception exception2) {

}

encode = "GBK";

try {

if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是GBK

String s3 = encode;

return s3;

}

} catch (Exception exception3) {

}

return ""; //如果都不是,说明输入的内容不属于常见的编码格式。

}

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