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";
}