计算机内的信息编码
西文字符编码
西文就是英文,数字,英文标点等等,每个ASCII码以一个字节(Byte)储存,国际通用的7位码用7位二进制数表示一个字符的编码,其编码范围是00000000-01111111,共27=128个字符。(最高位是0)也就是计算机内部使用一个字节存放一个7位ASCII码,b0--b6表示ASCII码值,最高位b7置0。
中文字符编码
后来,计算机传入中国并开始普及时,首要问题是解决中文编码问题,即刻出现了
区位码(国家标准定义)
GB2312是一种中文的编码方式,具体是由区位码来实现的。GB2312将7445个字符编入一个 94*94 的二维表, 行就是 "区"、列就是 "位", 其中的一个汉字由区、位唯一定位,其对应的区、位合并就为区位码。一级汉字3755个(16-55 区: 常用汉字, 按拼音排序),二级汉字编3008个(56-87 区: 非常用汉字, 这是按部首排序的),682个非汉字(00-09 区为符号、数字、英文字符...制表符等)10-15 区: 空白, 留待扩展;88-94 区: 空白, 留待扩展.
国标码:汉字信息交换码
汉字国标码=十六进制区号和位号分别加上20H,将 "区" 和 "位" 分别加上32(十六进制表示: 20H) 作为国标码。为什么要加上32呢,当时在制定GB2312之前,就决定覆盖掉ASCII中符号和英文字母部分,所以将其中的英文字母和符号重新编入GB2312中。而对于ASCII中前32个控制字符则继续沿用。所以保留前32字符,就需要将汉字编码向后偏移32,十六进制20H,这也就是区位码要加上20H得到国标码,这就是GB2312的编码规范。
内码:
计算机中存储的就是内码,但是这样并不能在计算机上使用,因为这样会和 ASCII 码混淆。所以又有规定把每个字节的最高位都从 0 换成 1,就是把每个字节(区和位)都再加上 128(十六进制的: 80H),从而得到 "机内码", 也就是前面所说的 "内码"。内码是微软为了解决冲突问题而采用的方式,本质上是修改了GB2312的编码标准,而这种方法最后产生的编码称为内码。
区位码 --->国标码
区和位分别 +32(20H)
国标码 --->内码
国标码区和位分别+128 (80H)
区位码 + A0A0H = 内码。