java字符串编码转换

时间:2021-01-10 15:42:56

java支持的字符编码很多,想要查看是否被java所支持,可以使用方法:

System.out.println(Charset.isSupported("UTF-8"));// true
System.out.println(Charset.isSupported("ISO8859-1"));// true
System.out.println(Charset.isSupported("ISO-8859-1"));// true
System.out.println(Charset.isSupported("GBK"));// true
System.out.println(Charset.isSupported("GB2312"));// true
System.out.println(Charset.isSupported("GB18030"));// true
System.out.println(Charset.isSupported("BIG5"));// true
如果想把未知编码的字符串转换为想要的编码,可以这样写:

public static String convertEncoding(String str, String encoding) {
try {
if (str == null) {
return null;
} else if (str.equals(new String(str.getBytes("UTF-8"), "UTF-8"))) {
return new String(str.getBytes("UTF-8"), encoding);
} else if (str.equals(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1"))) {// ISO8859-1 相同
return new String(str.getBytes("ISO-8859-1"), encoding);
} else if (str.equals(new String(str.getBytes("GBK"), "GBK"))) {
return new String(str.getBytes("GBK"), encoding);
} else if (str.equals(new String(str.getBytes("GB2312"), "GB2312"))) {
return new String(str.getBytes("GB2312"), encoding);
} else if (str.equals(new String(str.getBytes("GB18030"), "GB18030"))) {
return new String(str.getBytes("GB18030"), encoding);
} else if (str.equals(new String(str.getBytes("BIG5"), "BIG5"))) {
return new String(str.getBytes("BIG5"), encoding);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
更多的编码支持,继续添加  else if  即可。

如果想直接获得编码名称,直接返回即可:

} else if (str.equals(new String(str.getBytes("UTF-8"), "UTF-8"))) {
return "UTF-8";
}