1.编码表
1.定义
字符和计算机二进制的对应关系表,就是编码表
2.分类
-
ascii:
一个字节中的7位就可以表示。对应的字节都是正数。0-xxxxxxx
-
iso-8859-1
拉丁码表 latin,用了一个字节用的8位。1-xxxxxxx 负数。
-
GBK
目前最常用的中文码表,2万的中文和符号。用两个字节表示,其中的一部分文字,第一个字节开头是1,第二字节开头是0
-
GB18030
最新的中文码表,目前还没有正式使用。
-
unicode
国际标准码表:无论是什么文字,都用两个字节存储。
java中的char类型用的就是这个码表。char c = ‘a’;占两个字节。
Java中的字符串是按照系统默认码表来解析的。简体中文版 字符串默认的码表是GBK。
7.UTF-8
基于unicode,一个字节就可以存储数据,不要用两个字节存储,而且这个码表更加的标准化,在每一个字节头加入了编码信息(后期到api中查找),3个字节表示中文。
3.能识别中文的码表
GBK、UTF-8;正因为识别中文码表不唯一,涉及到了编码解码问题。
对于我们开发而言;常见的编码 GBK UTF-8 ISO-8859-1
文字—>(数字) :编码。 “abc”.getBytes() byte[]
(数字)—>文字 : 解码。 byte[] b={97,98,99} new String(b)
2.乱码解决
中文乱码出现的情况研究
注意点:乱码解决的办法是再编码再解码
但是如果是编码出错了,无法解决.如果是解码出错了,可以利用再编码再解码
- 编码 解码 结果
- GBK utf8 不可以(GBK2个字节,utf83个字节)
- GBK ISO8859-1 可以
- utf8 GBK 有时可以
- utf8 ISO8859-1 可以
- ISO8859-1 GBK 不可以(编码就出错了)
- ISO8859-1 utf8 不可以(编码就出错了)