前言
总目录
日常开发过程中,经常会遇到ASCII,GBK,Unicode(UTF-32/UTF-8)等名词,对于这些概念是不是有点傻傻分不清呢?相信看下本文,你会有自己的理解。
一、ASCII码
1、缘由
美国人需要将自己的语言存储进计算机,但是计算机是二进制的,因此他们就想办法先将自己英文字母和符号从0-127分别进行了编号,然后将这个0-127的编号又转化为2进制,因此就产生了ASCII码。计算机就能够"认识"他们的语言了
2、ASCII全称
美国信息交换标准代码,包含了英文和符号
标准ASCII使用一个字节存储一个符号,首位是0,总共可表示128位字符(对于美国够用)
ASCII表
关于字节详解
3、意义
有了ASCII相当于有了一本字典,能够将人类的指令翻译给计算机,然后计算机按指令执行相关操作。
例如:当计算机读取到 0100 0001,就知道这个代表的是A
二、GBK(汉字内码扩展规范,国标)
1、缘由
随着计算机的发展,咱中国人也开始用计算机了,但是咱中文博大精深,ASCII码完全不够用啊,于是就有了GBK(汉字编码字符集),包含了2万多个汉字与字符,GBK中一个中文字符编码用两个字节的形式存储
注意:GBK 兼容了ASCII字符集
2.问题
那么有人就要说了,如果我一句话中有中文,有英文,电脑怎么区分呢?到底按照什么标准解析呢?
这个时候就有了GBK另一项规定:汉字的第一个字节的第一位必须是1
通过以上规定就解决了区分中英文的问题。
三、Unicode字符集(统一码,也叫万国码)
1、缘由
随着计算机的发展,世界上不同的国家都开始使用计算机,但是每个区域的国家都有自己的语言,如果每个国家都发明一个字符串将会有很多的字符集,为了统一标准,由国际组织制定了,一个字符集,就是Unicode字符集。Unicode字符集,可以容纳世界上所有的文字,符号的字符集
2、UTF-32和UTF-8
Unicode 字符集第一个版本:UTF-32,4个字节表示一个字符,兼容性很好,但是占存储空间,通信效率变低,不被国际社会接受。因为原先存储一个字节就可以,解码的时候也只需解码一个字节,效率更高
由此,发明了UTF-8,这是Unicode字符集的另一种编码方案,采取可变长度的编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节(按需分配)
其中 英文字符,数字等只占1个字节(兼容ASCII),汉字占用3个字节
四、乱码
encoder和decoder的区别 计算机中所有的数据都是以二进制形式存储的,但我们直接看二进制是看不懂的,所以要借助decoder和encoder来完成字符与二进制数据之间的转换。
encoder:编码,将我们能看懂的字符转换为二进制(让计算机看懂)
decoder:解码,将二进制转化为我们能看懂的字符串
那么上面所讲的ASCII,GBK,Unicode UTF-8码表就是编码和解码的参考物
如果编号时采用的编码和解码时不一致的时候就会产生乱码
五、ANSI
ANSI 不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI编码代表 GB2312编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表JIS 编码。
总结
以上就是今天要介绍的内容,另外为了避免乱码等情况出现,技术人员在开发的时候都应该使用UTF-8进行编号
附:
总目录