什么是汉字编码?

什么是汉字编码?

什么是汉字编码?

文章插图
每天,我们都窝在格子间里噼里啪啦敲代码敲到脱发,对代码我们是再熟悉不过的老朋友了 。但不知道小伙伴们有没有想过这样一个问题:那些让我们“英年早秃”的代码,到底是怎么来的呢?今天,丽斯老师就带大家看看,这个让我们爱恨两难的“老朋友”究竟是何方神圣 。
什么是编码?编码,是信息从一种形式或格式转换为另一种形式的过程,简单来讲就是语言的翻译过程 。
我们都知道计算机使用的是机器语言即二进制码,相信大部分人都无法流畅的阅读二进制码 。于是为了能够让人类更好的理解计算机输出的结果就需要将机器语言转换为自然语言 。比如英语、俄语和中文等 。这看似简单的语言转换过程,随着计算机的普及,与互联网化对语言字符的编码冲击也越来越大 。
编码规范的调整也伴随着整个计算机发展历史在逐步完善,甚至“愈演愈烈” 。现代编码模型为了能够更精确的描述在编码过程中各个产物的归属以便正确的描述产物所发挥的功能 。于是多事之人将现代的编码整理为一套可以说明的模型而且分为五层之多 。
现代编码模型之分层:抽象字符表(ACR:Abstract character repert-oire)是一个系统支持的所有抽象字符的集合 。简单来说就是该层规范要确定一个系统能够包含的字符和字符形式 。比如Windows支持中文,那么它的抽象字符表一定有中文字符集合而且也适配不同编码方式指定具体是何字符 。
编码字符集(CCS:Coded Character Set):是将字符集中每个字符映射到1个坐标(整数值对:x, y)或者表示为1个非负整数 。字符集及码位映射称为编码字符集 。例如,在一个给定的字符表中,表示大写拉丁字母“A”的字符被赋予整数65、字符“B”是66,如此继续下去 。
简单来说这就是一个映射关系表,将一串码值映射到抽象字符表里的特定字符 。字符编码表(CEF:Character Encoding Form):该层也称为”storage format” 。对于一个包含几乎全球语言的字符集 。比如Unicode字符集最多可以2的31次方个字符,用4个字节来存储一个 。
但是真的有必要在时时刻刻都使用4个字节来记录一个字符吗?很显然不是这样 。比如拉丁字母“A”实际上需要二进制码01000001一个字节就可以表示 。于是需要一种类似于压缩方式的方法,来尽量用最少空间存储不同种类字符的方式比如后面会提到的UTF 。所以这一层主要是描述字符编码所能采用的编码格式 。
字符编码方案(CES:Character Encoding Scheme):也称作”serialization format”,将定长的整型值(即码元)映射到8位字节序列,以便编码后的数据的文件存储或网络传输 。传输编码语法(transfer encoding syntax):用于处理上一层次的字符编码方案,提供的字节序列 。一般其功能包括两种:一种是把字节序列的值映射到一套更受限制的值域内,以满足传输环境的限制,例如Email传输时 ba