字符集
|
术语名称
|
字符集
|
英语名称
|
character set
|
别名
|
charset
|
编码字符集
|
术语名称
|
编码字符集
|
英语名称
|
coded character set
|
别名
|
coded charset, 字符映射, character mapping, charmap, 代码页, code page
|
码位
|
术语名称
|
码位
|
英语名称
|
code point
|
编码空间
|
术语名称
|
编码空间
|
英语名称
|
code space
|
字符库
|
术语名称
|
字符库
|
英语名称
|
character repertoire
|
别名
|
字库表
|
字符集(character set)是一个规则集,一些选定字符的集合。字符集一般与一种或多种字符编码绑定,包含指定场景下需要或能够表示的全体字符。
字符集中通常对每个字符唯一标识(通常是整数,或者通俗地说,编号、数字代号),此时称为编码字符集(coded character set)/字符映射(charmap)/代码页(code page),这一标识称为码位(code point)。
一个编码字符集中全体可能的码位总范围称为编码空间(code space),编码空间是可能范围或取值上限,不一定都已经被填充。
编码字符集中,可以通过编码表示的全部字符的集合称为字符库/字库表(character repertoire)。
在计算机内部存储、传输时,需要将编码字符集中的码位再次映射到二进制串,以及将二进制串映射回码位,这两个过程中的规则及算法称为字符编码。但由于很多时候字符集和字符编码是一对一关系,此时由码位到二进制串的映射常常是恒等映射,逻辑上字符到码位与码位到二进制串的两次映射被合二为一,因此有人会混淆这两个词,但实际是不同层级的概念,这也使得字符编码可以广义地指从字符到二进制串的完整过程。
由于术语较为琐碎,人们有时不区分字符集和字符库,不区分字符集和编码字符集。且对这些层级的划分存在一些争议。
根据是否可以扩展,字符集(严格地说是字符库)大致分为三类。封闭的字符集指一个字符集标准已经冻结,永远固定不变;有限开放或向后兼容的字符集指字符集虽然固定,但是留有可以扩展的空间,使用这些空间需要更改字符集内码位排布方式,这些更改无法现在确立,导致未来字符集可以向后兼容当前字符集,当前字符集无法向前兼容未来字符集(只能知道出现了当前无法解析的内容,无法确认这一内容的格式、是否要解析成一个或多个字符等);开放的字符集指字符集可以继续扩展字符,一般留有可扩展编码空间以及扩展方式,保证未来扩展无需更改底层框架,仍然与当前字符集互相兼容,可以按照当前方式解析未来的码位(不知道是什么字符,但能保证这一码位一定只是一个现在无法辨认的字符)。