字符编码
【1】阶段一:一家独大(ASCII)
(1)ASCII表的诞生
- 现代计算机起源于美国,所以最先考虑仅仅是让计算机识别英文字符,于是诞生了ASCII表
(2)ASCII表的特点
- 只有英文字符与数字的一一对应关系
- 一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
(3)字母对应ASCII表
- A-Z : 65-90
- a-z : 97-122
- 0-9 : 48-57
- 小写字母对应的数字一定大于大写字母
【2】阶段二:诸侯割据(ASCII/GBK/Shift_JIS)
- 为了让计算机能够识别中文和英文,中国人定制了
GBK
(1)GBK表的特点
- 只有中文字符、英文字符与数字的一一对应关系
- 一个英文字符对应1Bytes 一个中文字符对应2Bytes
- 补充说明
- 1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
- 2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符
(2)各国不同的编码表
- 为了让计算机能够识别日文字符、英文字符与数字的一一对应关系,日本定制了
Shift_JIS
表 - 为了让计算机能够识别韩文字符、英文字符与数字的一一对应关系,韩国定制了
Euc-kr
表 - 美国人用的计算机里使用字符编码标准是ASCII
- 中国人用的计算机里使用字符编码标准是GBK
- 日本人用的计算机里使用字符编码标准是Shift_JIS
【3】阶段三:一统天下(unicode)
- unicode于1990年开始研发,1994年正式公布
(1)unicode的特点
- 存在所有语言中的所有字符与数字的一一对应关系,即兼容万国字符
- 与传统的字符编码的二进制数都有对应关系,详解如下
- 很多地方或老的系统、应用软件仍会采用各种各样传统的编码,这是历史遗留问题。
- 此处需要强调:软件是存放于硬盘的,而运行软件是要将软件加载到内存的,面对硬盘中存放的各种传统编码的软件,想让我们的计算机能够将它们全都正常运行而不出现乱码,内存中必须有一种兼容万国的编码,并且该编码需要与其他编码有相对应的映射/转换关系,这就是unicode的第二大特点产生的缘由
(2)字符的存储
- 文本编辑器输入任何字符都是最新存在于内存中,是unicode编码的
- 存放于硬盘中,则可以转换成任意其他编码,只要该编码可以支持相应的字符
- 英文字符可以被ASCII识别
- 英文字符--->unciode格式的数字--->ASCII格式的数字
- 中文字符、英文字符可以被GBK识别
- 中文字符、英文字符--->unicode格式的数字--->gbk格式的数字
- 日文字符、英文字符可以被shift-JIS识别
- 日文字符、英文字符--->unicode格式的数字--->shift-JIS格式的数字