一、GBK
(英文)
英文用一个字节存储,兼容ASCII,二进制前面补0
(汉字)
汉字两个字节存储
高位字节二进制一定以1开头,转成十进制之后是一个负数(与英文区分)
二:Unicode
1、UTF-8使用
·一个字节:ASCIl字符
·两个字节:带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母
·四个字节:其他极少使用的语言字符
2、UTF-8编码方式(二进制)
1字节0xxxxxxx
2字节110xxxxx 10xxxxxx
3字节1110xxxx 10xxxxxx 10xxxxxx
4字节11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5字节111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6字节1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
* UTF-8是可变长度字符编码,是编码方式而不是字符集字符编码
三、编码&解码
1、编码
getBytes() 使用默认方式进行编码(IDEA默认为UTF-8)
getBytes(String charsetName) 使用指定方式进行编码
String str="bi编码";
byte[]b1=str.getBytes();
System.out,println(Arrays.toString(b1)); ----------默认方式编码
byte[]b2=set.getBytes(GBK);
System.out,println(Arrays.toString(b2)); ---------GBK方式编码
2、解码
String(byte[] bytes) 使用默认方式进行解码(IDEA默认为UTF-8)
String(byte[] bytes,String charsetName) 使用指定方式进行解码
String str1=new String(b1);
System.out,println(str1);
String str2=new String(b1,"GBK");
System.out,println(str2);
注意:编码解码方式要相同,不然会出现乱码