String str = "abc"; String str1 = new String(str.getBytes(),"UTF-16"); String str2 = new String(str1.getBytes(),System.getProperty("file.encoding")); 这样转出来有问题: str1和str2是一样的
你转回来用 String c = new String(b.getBytes("UTF-16"),Charset.defaultCharset() );另外,编码是指把字符串编码成字节数据,存贮时都是存贮的字节数据,然后根据其编码还原成对应的字符串. 且JAVA虚拟机上所有字符都是以Unicode码形式的字节数据存贮的,如果楼主的a字符串是正常显示的话,那么你这样转出来的b字符串将变成乱码.(只是字母的话还可能不会乱码)
String a = "abc"; String b = new String(a.getBytes("UTF16"),"要转换的类型");
/**
* 字符串编码转换的实现方法
* @param str 待转换编码的字符串
* @param oldCharset 原编码
* @param newCharset 目标编码
* @return
* @throws UnsupportedEncodingException
*/
public String changeCharset(String str, String oldCharset, String newCharset)
throws UnsupportedEncodingException {
if (str != null) {
//用旧的字符编码解码字符串。解码可能会出现异常。
byte[] bs = str.getBytes(oldCharset);
//用新的字符编码生成字符串
return new String(bs, newCharset);
}
return null;
}
String str1 = new String(str.getBytes(),"UTF-16");
String str2 = new String(str1.getBytes(),System.getProperty("file.encoding"));
这样转出来有问题:
str1和str2是一样的
String c = new String(b.getBytes("UTF-16"),Charset.defaultCharset() );另外,编码是指把字符串编码成字节数据,存贮时都是存贮的字节数据,然后根据其编码还原成对应的字符串.
且JAVA虚拟机上所有字符都是以Unicode码形式的字节数据存贮的,如果楼主的a字符串是正常显示的话,那么你这样转出来的b字符串将变成乱码.(只是字母的话还可能不会乱码)
String b = new String(a.getBytes("UTF16"),"要转换的类型");