位,字节,字符,字符集,编码之间的关系
1.位
数据存储的最小单位。一个二进制的0或1就代表一个位。
2.字节
8各位构成一个字节。也就是一个8位数的二进制。
3.字符
就是一个符号,@#¥&%…
4.字符编码的发展
编码的发展大致分为三个阶段
编码 | 说明 | |
---|---|---|
第一阶段 | ASCII | 计算机是外国人发明的所以一开始只支持英文显示,而只需要8位数的二进制就可以将所有的英文字母表示在内**(一个字符用一个字节表示)** |
第二阶段 | ANSI本地化 | 为了能使计算机支持更多的语言,比如说汉字,如果使用一个字节表示一个汉字的话,那么8位数的二进制是不能包含所有,因此,ASNI采用两个字节表示一个字符。不同的国家采用了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。但是这样就会出现一个问题,不同的ASNI编码方式是无法进行交流的,因此出现unicode编码 |
第三阶段 | Unicode | Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。它仅仅只是一个字符集。 |
字符串在内存中的存放方法:
在ASCII阶段:一个字节存放一个字符。比如“Bob23”,在内存中的表现:
42 6F 62 31 32 33 00
B o b 1 2 3 \0 ->字符串结束的标志。
在ANSI阶段:支持了多种语言,此时每个字符用一个或者多个字节表示,
D6 D0 CE 31 32 33 00
中 文 1 2 3
5.字符集
使用哪些字符,用汉字举例:也就是说哪些汉字,字母和符号会被存放到这个标准中。这个标准的集合就叫做字符集。
上面说的Unicode仅仅只是一个字符集,其意思就是说Unicode编码表:只规定了字符所对应的二进制编码是多少。但是其编码方式我们并不知道(就是如何存储的)。以“汉”为例,二进制编码是0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。往后有的可能需要3个字节或4个字节来表示,那么计算机是如何知道2个字节表示的是一个字符,3个表示一个。这就需要通过编码方式来解决。
6.编码方式
规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码方式”。
常见的编码方式:
ASCII:ISO-8859-1
ASNI:GBK
Unicode:utf-8