16.基础语法-字符存储原理

16 字符存储原理

16.1 字符存储

  数字是有限的,常用汉字三四千,汉字一共两万多字,将每个汉字进行编号

举例:it黑马! 转换对应,i -> 105 、t -> 116 、黑 -> 40657 、马 -> 39532 、!-> 33 从而使字符和数字有了一一对应关系,再将数字转成二进制存储

16.2 编码表

字符与数字映射关系的规则,称之为编码表

16.2.1 ASCII码

  ASCII码:美国信息交换标准编码,规定了数字字符、英语字母、其他常用符号等共计128个字符及对应的数值编号,每个字符对应的数值称为码点(Code Point)

  0 - 127 共 128 个字符,0 - 31 前 32 个为特殊字符,其余都是键盘常见字符

  由于常见字符对应的码点用 8 个二进制位就可以表示,因此计算机设计时就默认以每8个bit为一组来读写数据。

  每8个bit称为一个 Byte字节),简写为 B,是计算机中数据读写的基本单位。

1 KB = 1024 B

1 MB = 1024 KB

1 GB = 1024 MB

1 TB = 1024 GB

image

ASCII码 只有英文字母,因此只能满足英语国家的需求,非英语国家无法使用,比如中文

16.2.2 GBK码

  GBK码,全称是《汉字内码扩展规范》,兼容ASCII码表的同时,扩展了21003个汉字,用两个字节来表示字符。

以黑马为例:

1011 1010 1101 10101100 0010 1110 1101

16.2.3 Unicode码

  Unicode码,也叫统一码或万国码,是由 ISO(国际标准化组织)制定的码表。包含了世界上大部分国家的大多数文字和字符,大约有14万多,其中包含了65536个常用基础字符,剩下的是补充字符,汉字的码点通常都只占用2字节。

以黑马为例:(注:与上面GBK码存储不同)

1001 1110 1101 00011001 1010 0110 1100

当以一种码形式存储,而以另一种码形式读取时,例如:GBK 码存储,以 Unicode码读取时,会发生错乱,这种叫乱码。

Unicode编码表有多种不同的实现方式,常见的有:

  UTF-8:是一种变长的编码方式(即根据字符本身的码点动态变化),它可以使用 1~4 个字节(例如:字母是 1 个字节,汉字是 2 个字节)表示一个符号,根据不同的符号而变化字节长度,可以节省内存空间

  UTF-16:也是变长编码方式,基础字符用 2 个字节,补充字符用 4 个字节

  UTF-32:固定长度编码,不管字符的 Unicode 码多大,统一使用 4 个字节,相对浪费内存

16.2.4 UTF-8码

UTF-8 根据字符本身的码点动态变化的规则

UCS-2 编码(16进制) UTF-8 编码(二进制)
0000 - 007F(7 x 16 + 15) 0xxxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
01 0000 - 10 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

 

 

 

 

以字符 黑 1001 1110 1101 0001 二进制为例, 查看 黑 字符所在 16进制 区间,1001 1110 1101 0001 = 9 + E + D + 1 = 9ED1 ,对比 9ED1 所在区间为 0800 - FFFF 之间,即 1110xxxx 10xxxxxx 10xxxxxx 的 二进制区间,存入原则以占位形式自后向前存入,即 11101001 10111011 10010001(黑 1001 1110 1101 0001

验证:

UTF-8 编码(十六进制):E9 BB 91(通义千问)

打开电脑计算机 -> 科学模式 -> 程序员 -> HEX 输入 E9 BB 91

image

16.3 小结

1.计算机如何存储字符数据?

  制定字符与数字映射关系,称之为字符编码表,这样就可以把字符转为数字,数字从而转为二进制进行存储。

2.常见字符编码表有哪些?有什么特点?

  ASCII码:占1个字节,最高位是0,低7位表示0~127个字符(0111 1111)

  GBK:国标码表,占2个字节,兼容ASCII码,包含大多数中文字符(两万多个)

  Unicode:统一码、万国码,包含全世界大多数国家的字符和符号,有多种实现方式

    UTF-8:变长码,根据码点大小,占1~4个字节(最常用)

    UTF-16:变长码,基础字符占2字节,其它字节占4字节(很少用)

    UTF-32:固定码,统一占4字节(浪费内存,很少用)

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2025-12-08 17:38  马俊南  阅读(16)  评论(0)    收藏  举报