1.ASCII:美国人编的 把他们常用的语言符号,数字,标点,特殊符号编成码点(十进制),转成2进制只需要7位就够了,因为他们就编了128种符号,因为计算机底层存放二进制是以字节位单位,所以ACSII字符集占1字节。所以前面一位补0就可以。
这也是ASCII编码的特点 第一位为0
随着计算机的发展,不止美国人,中国人也有自己的编码:GBK
2.GBK编码
中国人编写的,兼容了ASCII码(兼容就是原来的ASCII种65(十进制)代表a现在GBK也是),谁让ASCII是先出现的,计算机这玩意不就是西方说的算。
GBK中汉字占两个字节,想一想2的16次方能表示的字符数65536
GBK编码中包含汉字的数量是21886个,加上那一点ASCII字符数量,65535当然绰绰有余
GBK编码特点:汉字的两个字节,第一个字节的第一位为1
3.Unicode编码
随着计算机的普及,各国都有自己的编码,这样在信息交流方面带来很大的不便。
所以国际出台了Unicode编码
关于UTF-32
全世界语言字符那么多?怎么确保都用一个统一的规范编进“字典”?
国际联盟说,海纳百川,有容乃大!
它出手了!直接用4个字节(32位)代表一个字符,2的32次方,我的天,这个妥妥够用了,但是这样显然占据内存较多,我的评价不如GBK。
关于UTF-8
他就是秦王,一统天下 !
它是我的神!
汉字占3个字节,思考以下解码的适合怎么知道是三个字节连在一起解的呢?
因为我们在编码的时候 汉字我的第一个字节以1110开头,所以解码的时候,计算机一看这个字节以1110开头,那我就从这个字节往后一起数三个,一起看,最终解码成“我”这个字符
如下是为什么会乱码的一个举例:
我们采用GBK进行编码 采用UTF-8进行解码
因为很多字符集都兼容了ASCII码,所以在编解码的时候数字,英文字符一般不会乱码
但是汉字,呵呵 GBK编码是以1开头,解码的时候计算机拿到这个以1开头的字节蒙了,不知道什么意思啊?
所以解码出来的是a??m
学习完相关字符集的知识点后下面是一些有关的javaAPi:
其实这些字符集没什么神秘的,有的人一遇到乱码就头疼,相信你掌握了上面的这些知识点,以后在碰见乱码见一个杀一个!