常见的编码表:
ASCII 美国标准信息交换码,用一个字节的7位表示
ISO-8859-1 拉丁码表,欧洲码表,用一个字节的全部8位表示
GB2312:中国的中文码表
GBK:GB2312的升级,融合了更多的中文文字符号
Unicode:国际标准码,融合了多种文字,所有文字都是使用两个字节来表示,java就是使用Unicode编码表
UTF-8:最多用三个字节来表示一个字符。如果能用一个字节来装,就使用一个字节,一个装不下,就用两个字节,最多三个字节
string s="你好";
byte[] buf=s.getBytes("GBK");// -60 -29 -70 -61 你好的GBK编码
byte[] buf=s.getBytes("UTF-8");// -28 -67 -96 -27 -91 -67 你好的UTF-8编码
//编码;
byte[] buf = str.getBytes("UTF-8");
//解码:
String s1 = new String(buf,"UTF-8");
乱码问题,类似tomcat里。
String str = "谢谢";
byte[] buf = str.getBytes("gbk");//使用GBK进行编码
String s1 = new String(buf,"UTF-8");//解码的时候使用了utf-8,出现乱码
解决办法是获取utf-8对应的字节值,然后再使用GBK解码就可以了,Tomcat就是这样做的。
byte[] buf2 = s1.getBytes("UTF-8");//获取源字节.
String s2 = new String(buf2,"GBK");//s2就是 谢谢
在java中"abcd"与"ab你好"的长度是一样的,都是四个字符,但是对应的字节数是不一样的。一个汉字两个字节。