ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
网上有人说, 可以用printf来判断字符是否是可打印字符, 这不是扯淡么?用printf能打印出很多不可见字符, 当然, 这可能和IDE相关。
ASCII字符集由95个可打印字符(0x20-0x7E)和33个控制字符(0x00-0x1F,0x7F)组成。可打印字符用于显示在输出设备上,例如荧屏或者打印纸上,控制字符用于向计算机发出一些特殊指令,例如0x07会让计算机发出哔的一声,0x00通常用于指示字符串的结束,0x0D和0x0A用于指示打印机的打印针头退到行首(回车)并移到下一行(换行)。
(注意大写字母A和小写字母a和数字0的序号,有时候会考到“a”和‘a’的区别和printf输出ASCII码)
只要记住这三个,其它的数字,大写,小写字母的ASCII码都可以推出来了。
可以看到:小写字母的ASCII > 大写字母的ASCII > 数字的ASCII。
一个ASCII码占1个字节,实际上只用了7位,最高位没有用。也就是2^7=128,95 33=128。
控制字符就是所说的不可打印字符,有33个
编码发展史
1、普通外国人,用的数字和字母有限,1Byte可以表示完全,根据ASCII表。如下:61、62、63、64分别是a、b、c、d
2、后来因为中国人要用汉字,所以引入了GB2312编码表,国标(6000多个汉字)。一个汉字用2个Byte表示。如下:d6 d0 就是“中”
随后又扩展了GBK,扩展编码,能够达到几万个汉字。
3、然后呢,港澳台同胞也要用电脑,是繁体字,所以制定了BIG5标准,也是2个Byte表示一个汉字,但内部编码和GB2312不一样。也就是说,即便内部都是d6 d0,但是BIG5里面是其他汉字,这就导致从台湾过来的文档,在大陆打开会乱码。
4、由于想统一编码,让世界范围内通用,随即指定unicode标准。
Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
不限制多少个Byte表示一个汉字,但缺点是:若汉字和应为一起存储,可能会浪费空间。不管何种编码,都会兼容ASCII编码,最原始的127个字符。
5、进而在Unicode基础上,进化出了UTF-8、UTF-16LE、UTF-16BE等编码规则,避免浪费。(小端、大端),所以我们经常会看到文件开头有个UTF-8。
如果喜欢我的文章,欢迎关注、点赞和转发,下面可以留言~~~