字库表、编码字符集、字符编码

参考文章:
1、十分钟搞清字符集和字符编码
2、字符编码与字符集的区别
3、字符编码笔记:ASCII,Unicode 和 UTF-8


以下概念,是我根据参考文章,整理来相应的逻辑推断出来的(因为暂时没有找到确切的文献),可能会参考文章原文中的定义存在差异,如有错误,欢迎指正,也欢迎不同想法的沟通。

字库表(character repertoire):相当于一个 所有 可读或者可显示字符的数据库(可读的字符不一定能够直观的显示出来,如回车)。其决定了编码字符集能够展示的字符的范围。每一种编码字符集,应该都对应着一个字库表。例如 ASCII 字符集,对应的字库表就是由换行、回车等控制字符,和数字、大小写字母、英文标点符号等 128 个字符组成的。且这 128 个字符,是按照一定顺序来排列的。这里需要注意,字库表本身只包含按照顺序排序的字符,而不包含标记字符位置的序号。

编码字符集(coded character set):是字库表中所有字符以及对应的编码的集合(这里的 “编码”,是名词)。每一个编码(Code Point),都是一个二进制代码(因为计算机的底层就是基于二进制的),且都对应着字库表中的一个字符(就类似于摩斯电码,A 对应的代码为 ·-)。而该编码,一般取值为字符在字库表中的位置序号。

从某种形式上来说,编码字符集是字库表的扩展。

字符编码:(这里的 “编码”,是动词)是一种映射规则,通过这种规则,就可以把存储二进制的数据转换成对应的字符,或者把字符转换为用于存储的二进制数据。而不是直接将编码字符集中的编码进行存储,不依照规则,则可能出现乱码。

因为字符集只规定了字符的二进制代码,却没有规定这个二进制代码如何存储。因此,就需要 “字符编码” 来处理了,即参考某一规则,将原始的二进制代码进行加工,才能进行存储。反过来,也需要根据这一规则将存储的内容进行解码,才能。另外,一个编码字符集,可以对应多种不同的字符编码。

编码字符集 Unicode,有 UTF-8、UTF-16、UTF-32 等多种字符编码。
编码字符集 ASCII,即对应着 ASCII 字符编码。
编码字符集 CB2312,只有 EUC-CN 一种字符编码。

以 Unicode 字符集举例,它对世界上大部分的文字系统进行了整理、编码,使得计算机可以用更为简单的方式来呈现和处理文字。

UTF-8 是其常用的字符编码之一。它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

(1)比如 大写字母 A,其在 Unicode 字符集中对应的编码为 1000001(二进制)。经过 UTF-8 字符编码后,为 01000001

其中 1000001 为原始 Unicode 字符集的二进制编码,01000001 为在计算器中存储时的二进制代码。这两者是要进行区别的。

(2)对于汉字 ,其在 Unicode 字符集中对应的编码为 100111000100101(二进制)。经过 UTF-8 字符编码后,为 11100100 10111000 10100101。(参考自:字符编码笔记:ASCII,Unicode 和 UTF-8

至于具体的 UTF-8 的编码规则,也可以参考 字符编码笔记:ASCII,Unicode 和 UTF-8


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值