Unicode

来自GSXAB的知识库
Unicode
术语名称 Unicode
英语名称 Unicode
别名 统一码, 万国码, 单一码, 国际码

Unicode[1] 是一个广泛使用、构成事实业界标准的字符集以及其相关的一系列标准,也包括几个相关的字符编码方案。 Unicode 一词是专有名词,是标准名称以及组织商标名,一般保留使用;面向非专业领域时,通常使用其标准中文名称“统一码”,也有人译为“万国码”。

Unicode 是区分字符集和编码方式的字符集。这一字符集的编码空间为 0 到 0x10FFFFH ,有 21 位二进制位。其对应的编码方案有多种,主要包括 UTF-8 、 UTF-16 、 UTF-32 等。 Unicode 字符集仍然在不断更新中,到本文编写时间 2025.9 为止,最新版本为 17.0.0 ,发布日期为 2025.9.9 。

Unicode 字符集由 Unicode 联盟(the Unicode Consortium 、统一码联盟)开发,通过 ISO 10646 称为 ISO/IEC 标准。

字符集特征

Unicode 出现前是要解决之前过多无法通用的跨国别字符编码方案所带来的局限,不同系统使用不同的代码页导致文件无法在系统间交换,而且不同语言使用不同编码,几乎无法简单地支持多语言文本,因为无法同时使用多个字符集。因此, Unicode 诞生时想要创建一个统一字符集,包含现代和古代所有文字系统中的所有字符,并且每个字符赋予一个唯一标识。 1988 年提出时,名称 Unicode 反映了其想要提出一个独特(unique)、统一(unified)、通用(universal)的编码。

截至 Unicode 17.0 (2025.9.9), Unicode 已支持来自 172 种文字的 15,9801 个字符,涵盖了普通、文学、学术、技术类别的多种语境。

码位特征

Unicode 中的编码字符集称为 UCS (Unicode Coded Character Set),其中的每个码位在使用十六进制表示时,在前面加上前缀“U+”进行区分,且需要补零写成至少 4 位二进制位。因此,全部范围为 U+0000U+10FFFF

Unicode 中的码位可以看作跨越了两个字节,其中第一个字节相同第二个字节不同的情况,称为两者在同一平面(plane)。 也就是说,每个平面含有 65536 (=2¹⁶)个码位。Unicode 的编码中使用 17 个平面,用其高字节编码为第 0 到第 16 平面。 高字节为 0 的全体码位,即 U+0000U+FFFF 的范围,称为第 0 平面(Plane 0),包含绝大多数现代字符,称为基本多文种平面(Basic multilingual plane, BMP)。 相对地,第 1 到第 16 平面统称为辅助平面(supplementary plane)。具体而言,现在使用的除了第 0 平面以外还有:第 1 平面多文种补充平面(Supplementary Multiplingual Plane, SMP)、第 2 平面表意文字补充平面(Supplementary Ideographic Plane, SIP)、第 3 平面表意文字第三平面(Tertiary Ideographic Plane, TIP),以及第 14 平面特殊用途补充平面(Supplementary Special-purpose Plane, SSP)、第 15~16 平面补充私人使用区(Supplementary Private Use Area planes, 分别叫 SPUA-ASPUA-B)。

每个平面被进一步分为多个界限与 16 的整数倍对齐的区块(block),这些区块根据各自所想要存放的字符种类,起有各自的英文名称。区块中文名由于翻译的不同可能存在差异。

目前涉及汉字的有:

  • U+4E00-9FFF:中日韩统一表意文字(CJK Unified Ideographs):也称 CJK 统一汉字。
  • U+3400-4DBF:中日韩统一表意文字扩展-A(CJK Unified Ideographs Extension-A):也称扩展 A 区,通称扩 A 。
  • U+F900-FAFF:中日韩兼容象形文字(CJK Compatibility Ideographs):由于 Unicode 需要保证双向转换,部分兼容编码中需要对一些汉字保持多个不同编码(特别是韩国编码中有将每个汉字不同读音使用不同编码的历史包袱),这些额外字符会被放在兼容区,单独使用时要求被规范为对应字符本身应当在的码位。
  • U+20000-2A6DF:中日韩统一表意文字扩展-B(CJK Unified Ideographs Extension-B):也称扩展 B 区,通称扩 B 。
  • U+2A700-2B73F:中日韩统一表意文字扩展-C(CJK Unified Ideographs Extension-C):也称扩展 C 区,通称扩 C 。
  • U+2B740-2B81F:中日韩统一表意符号扩展-D(CJK Unified Ideographs Extension-D):也称扩展 D 区,通称扩 D 。
  • U+2B820-2CEAF:中日韩统一表意符号扩展-E(CJK Unified Ideographs Extension-E):也称扩展 E 区,通称扩 E 。
  • U+2CEB0-2EBEF:中日韩统一表意符号扩展-F(CJK Unified Ideographs Extension-F):也称扩展 F 区,通称扩 F 。
  • U+2EBF0-2EE5F:中日韩统一表意符号扩展-I(CJK Unified Ideographs Extension-I):也称扩展 I 区,通称扩 I 。
  • U+2F800-2FA1F:中日韩兼容表意符号扩展(CJK Unified Ideographs Extension-B):通称扩 B 。
  • U+30000-3134F:中日韩统一表意符号扩展-G(CJK Unified Ideographs Extension-G):也称扩展 G 区,通称扩 G 。
  • U+31350-323AF:中日韩统一表意符号扩展-H(CJK Unified Ideographs Extension-H):也称扩展 H 区,通称扩 H 。
  • U+323B0-3347F:中日韩统一表意符号扩展-J(CJK Unified Ideographs Extension-J):也称扩展 J 区,通称扩 J 。

类似汉字或参与表示汉字的符号:

  • U+2F00-2FDF:中日韩部首及康熙部首(CJK Radicals / Kangxi Radicals)
  • U+2E80-2EFF:中日韩部首扩展(CJK Radicals Supplement)
  • U+2FF0-2FFF:表意文字描述符(Ideographic Description Characters)。
  • U+31C0-31EF:中日韩笔画(CJK Strokes)

常见编码

Unicode 有多种编码,见各自条目。

  • 过时的 UTF (即 UCS Transforming Format , Unicode 字符集传输格式)编码: UTF-1UTF-7
  • 仍在使用的 UTF 编码: UTF-8UTF-16UTF-32
  • 直接使用 USC 码位: USC-2 见 UTF-16 、 USC-4 见 UTF-32 。

使用

Unicode 字符集及其编码几乎无处不在,特别是万维网等面向国际的或者需要使用多语言的场景中,已经到了我觉得不需要说明使用现状的程度。 Unicode 的广泛使用给全球文本交换提供了基础保证,使得真正出现了可以国际化本地化的系统和程序。 而且 Unicode 标准目前还在不断更新,并向其中增加新的字符适应时代发展。


常见字符编码
早期编码 电报码、 BCD 码BCDICEBCDIC)、ASCIIISO 646
ISO 8859 ISO 8859-1 、 ISO 8859-2 、……
国标系列 IBM 代码页 936 / GB 2312微软代码页 936 / GBK微软代码页 54936 / GB 18030
Unicode / ISO 10646 UTF-7 、 UTF-8UTF-16UTF-32
  1. 读作 /ˈjuː.nɪˌkəʊd/