ASCII码字符集

为什么有ASCII码

计算机存储和传输的数据必须是二进制,也就是说所有的信息都要转换成0和1表示。在两台通信设备之间通信的时候,比如要传输字符a,发送设备把a编码为0和1组成的序列,并发送出去,接口设备如何正确地的理解这个0和1序列呢?这就像两个人之间对话一样,如果两个人使用的是不同的语言,那么他们会存在沟通障碍。同样的地,计算机设备之间也需要统一的编码标准,把字符编码为统一的0和1序列,发送之前进行二进制编码, 接收的设备只要按照相同的规则解析,就可以读取出来信息了。统一的编码方案成为信息能够正确存储和传输的前提。

ASCII(American Standard Code for Information Interchange)美国信息交换标准代码,它是对字母、数字、符号进行二进制编码的标准。一个ASCII码长度是一个字节,也就是8个bit,最高位是0作为校验位,其余7位使用0和1进行组合,所以ASCII码共有128个。这128个字符包含33个控制字符和95个可显示字符。0-31以及127是控制字符,包含DEL删除,BS退格,CR回车等。32-126是可显示字符,其中32是回车,48-57是10个阿拉伯数字,65-90是26个大写的英文字母,97-122是26个小写的英文字母。

ASCII码表格

127个ASCII字符和数字是一一对应的关系,表格中展示的为十进制表示,在计算机传输和存储中,会把他们转换为二进制,比如数字0的十进制表示为48,转换为二进制就是00110000,在不同的设备中互相传输的就是这个二进制序列。

ASCII值ASCII字符ASCII值ASCII字符ASCII值ASCII字符ASCII值ASCII字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL

ASCII字符局限性

可以发现,ACSII字符最高位置0的情况下,最多表示128个字符,英文字符完全可以被编码,如果是其他语言,字符数量多于127个如何表示呢?一些国家对ASCII码做了扩展,让最高位也参与编码,这样ASCII码能表示的字符数量从128个上升到256个,这种编码ASCII也被成为扩展ASCII编码。

然而,扩展ASCII编码仍然有很大局限性,世界上有很多中语言文字,每种语言的字符数量不一,256个依然是不够用的。汉字的数量大约接近十万个,常用汉字大约六千个,如何实现汉字编码呢?此类情况,其他语言也是存在。每个国家都将自己的语言编码为某个标准,标准不统一,导致计算机设备在传输信息过程中出现乱码。Unicode编码的出现,它采用两个字节对接字符编码,理论上可以有256*256=65536个字符,解决了编码数量过少问题,同时,它也是通用的编码标准,避免了信息传输中乱码问题。

Unicode标准成为了国际认可的编码标准,但在推广过程中受到欧美国家的反对,他们的理由很简单,在ASCII编码体系下,他们字符编码仅仅需要一个字节,而Unicode采用了两个字节,存储空间占用直接变为两倍,同时他们所有的文本处理程序都需要重写,工作量很大,如果采用两个字节编码他们是无法接受的。互联网的普及强烈要求统一的编码格式,utf-8编码后来成为了通用编码方式。它采用变长编码,使用1-4个字节表示一个符号,根据符号的不同,变化字节长度。对于ASCII码,它在utf-8中的编码保持不变,仍是一个字节,原来处理ASCII字符的程序几乎不需要改变,可以继续使用。但对于中文来说,中文字符在utf-8中占用3个字节,在Unicode标准中需要两个字节,使用utf-8编码后,中文信息传输占用的流量变为1.5倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值