字符编码一(编码原理讲解)

前言

计算机一开始发明出来时是用来解决数字计算问题的,后来人们发现,计算机还可以做更多的事,例如文本处理。为了在计算机上也能表示、存储和处理像文字、符号等等之类的字符,就必须将这些字符转换成二进制数字。当然,肯定不是我们想怎么转换就怎么转换,否则就会造成同一段二进制数字在不同计算机上显示出来的字符不一样的情况,因此必须得定一个统一的标准进行转换。于是就设计出了进行这种转换的标准——字符编码标准。
字符编码的复杂性所引发的困惑,主要不在于其技术深度,而主要在于因其历史演变与沿革所导致的概念混乱和认知偏误。也就是说,很多人一开始,就被各种以讹传讹的说法(包括网络上的各种貌似专业、权威的百科词典和技术文章)给误导了、给带偏了,导致看的资料越多,困惑反而越多。本文章的目的就是为了重新进行细致梳理,厘清各种概念的边界,消除模糊地带,以正本清源、一扫迷雾。
另外首先要明确的是,字符编码针对的对象是文本(字符),因为计算机只能处理数字,如果要处理文本(如字符和字符串)就必须先经文本转换为数字才能处理,这就涉及到了字符编码问题

这里我准备两篇博客来归纳总结,第二篇博客是编码发展的过程介绍,用来辅助理解GB相关编码方式,参考了解下即可。
博客部分内容参考了知乎上相关内容,可参见字符编码参考

1.字符编码中涉及的常见术语:

字符编码涉及到很多基本的概念,这些概念是否能清楚的区分对于理解字符编码的架构和关系至关重要。有些概念在其他文章中出现了滥用和误用,有些概念是随着技术的发展原本的同义词出现了分化,有些概念要结合语境区分。这里面要注意区分的是4)-9)容易混淆的概念。
1) 编码:是信息从一种形式转换为另一种形式的过程,比如用预先规定的方法将字符(文字、数字、符号等)、图像、声音或者其他对象转换成规定的电脉冲信号或者二进制数字。
2) 解码:编码的逆过程。
3) 字符:则指的是各种文字和符号的总称,包括文字、数字、字母、音节、标点符号、图形符号等,图像符号比如下图所示我们现在微信等通信软件常用的Emoji表情符就是不断扩展到Unicode字符表中的。
在这里插入图片描述4)字符表(Character Repertoire),就是该编码方案支持的所有字符,从软件角度可以理解为一维数组,数组中包含了所有支持的字符。如ASCII编码支持128个字符,128个字符就是字符表。
5) 字符集(Character Set、Charset),我们这里是在字符表的基础上包括了字符编号。但是我们会笼统的 说常见的字符集有ASCII字符集、ISO 8859系列字符集(ISO 8859-1~8859-16)、GB系列字符集(GB2312、GBK、GB18030)、BIG5字符集、Unicode字符集等,字符集不仅定义了字符的集合,还定义了每个字符对应的编号,字符集,等于包含了字符和编号概念。
6) 字符编号:字符编号和字符编码的概念就是随着技术的发展逐渐区分开的。早期在ASCII编码方案阶段,这两个概念是没有区别的,因为字符使用的编码就是字符的编号;在ANSI编码方案阶段,微软将不同地区不兼容的编码方式使用代码页进行划分时,代码页中的编号也同样就是字符的编码(不过GB自身定义时实际上类似有区位码和机内码概念等效于编号和编码的关系,而ANSI代码页时将字符和编码直接映射,但是作为软件开发者并不需要再了解GB);而在Unicode编码方案阶段,字符编号和字符编码就更明显的进行了分层划分。
7)字符编码:即在字符集与指定集合两者之间建立一个对应关系(即映射关系)的过程。我们认为编码就是最终表现在输入计算机的数值。
8)字符编码方式:也就是字符编码的实现方法,同字符编号和字符编码类似,字符编码方式和字符编码方案在技术发展的早期是一个概念(因为早期技术比较简单,体现不出方式和方案的差别)。比如早期ASCII编码方式,你也可以说也是ASCII编码方案,因为整个编码方式就是一个字符集(字符+编码,并且编码等于编号)。ISO 8859、GB2312、GBK、GB18030、BIG5、UTF-8、UTF-16、UTF-32也都表示的是编码方式,即将字符转换为字符编码的映射方法。
9)字符编码方案:我们说字符编码方案、编码标准、编码系统认为是同义词,说的是一套完整的编码系统。完成的编码方案从历史顺序分为ASCII编码方案、ANSI编码方案、Unicode编码方案。
10)字符编码模型:是将编码方案抽象进行分层的概念,直到Unicode编码方案阶段,才有了5层结构。模型分为传统字符编码模型和现代字符编码模型,ASCII编码方案、ANSI编码方案称为传统编码模型,Unicode编码称为现代编码模型。实际上倒也不需要这么较真,ASCII编码方案、ANSI编码方案也可以按照5层结构进行划分,只不过有些层相当于是固定或默认的而已。
11)ANSI

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值