import java.io.UnsupportedEncodingException;public class mainTest { /**
* @param args
*/
public static void main(String[] args) {
String string = "解析①②";
try {
System.out.println(new String(string.getBytes("EUC-JP"), "EUC-JP"));
System.out.println(new String(string.getBytes("SHIFT-JIS"), "SHIFT-JIS"));
System.out.println(new String(string.getBytes("ISO-2022-JP"), "ISO-2022-JP"));
System.out.println(new String(string.getBytes("MS932"), "MS932"));
System.out.println(new String(string.getBytes("GBK"), "GBK"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
为什么前三个输出字符①②变成了乱码,而后2个输出就没有问题呢? 该怎么解决乱码问题呢?
----------------------
通过查看字节数组发现:
①的字节编码是:AD A1
②的字节编码是:AD A2
③的字节编码是:AD A3
以后都是加1的。
....并且我把这段字节数组保存到html文件里后,用浏览器打开就不是乱码了。
还有,这段字节数组是来自于cvs服务器的,如果用cvs客户端接收也不是乱码。
浏览器和cvs客户端又是如何做到不乱码的呢?
从Unicode编码的字符串取得EUC-JP bytes,
再从EUC-JP bytes到Unicode编码的字符串,
过程没有错,错的原因是EUC-JP不支持出现筹码的那几个字符