跳转到主要内容

Unicode 里的汉字:基本区和扩展区

适合谁看:想知道一个字的「编码」是什么、为什么有的字在「扩展 B 区」、扩展区的字为什么难处理的人。

码位:每个字的编号

Unicode 给每个字符一个编号,叫码位,写作 U+ 加十六进制数,例如「中」是 U+4E2D。

Unicode 把码位分成 17 个「平面」,每个平面 65,536 个位置:

汉字分布在哪些区块

下表按 Unicode 17.0(2025 年)的数据统计:的数据统计[1]:

区块 码位范围 汉字数 所在平面
中日韩统一表意文字(基本区) 4E00–9FFF 20,992 0
扩展 A 3400–4DBF 6,592 0
扩展 B 20000–2A6DF 42,720 2
扩展 C 2A700–2B73F 4,160 2
扩展 D 2B740–2B81F 222 2
扩展 E 2B820–2CEAF 5,774 2
扩展 F 2CEB0–2EBEF 7,473 2
扩展 I 2EBF0–2EE5F 622 2
扩展 G 30000–3134F 4,939 3
扩展 H 31350–323AF 4,192 3
扩展 J 323B0–3347F 4,298 3
兼容区中的 12 个统一汉字 F900–FAFF 12 0

合计 101,996 个统一汉字。2026 年发布的 Unicode 18.0 又在扩展 D 补了 1 个。个[2]。

扩展区为什么难处理

  • 在辅助平面:第 0 平面以外的字,在 UTF-8 里占 4 个字节,在 UTF-16(Windows、Java、JavaScript 内部常用)里要用两个单元(「代理对」)表示。只按 3 字节或 1 个单元处理的老程序会出错;
  • 字体少:扩展 B 以后的字,多数常用字体都没有;
  • 输入法少:很多输入法默认不出扩展区的字。

「统一」是什么意思

中国大陆、台湾、香港、日本、韩国、越南的汉字,如果只是写法细节不同,会合并成一个码位,由字体决定显示哪种写法,见《同一个字,为什么各地写法不同》。真正不同的字(如简繁)才分开编码。

怎么查一个字的编码

  • Unicode 官方汉字数据库(Unihan):输入字或码位查询;输入字或码位查询[3][4][5][6];
  • 在电脑上:Windows 的「字符映射表」、macOS 的「字符检视器」都能显示码位。

参考资料

参考资料(6)
    1. Unicode 17.0:https://www.unicode.org/versions/Unicode17.0.0/0,Unicode 联盟
    2. Unicode 18.0 变更说明,Unicode 联盟
    Unicode 字符数据库 Blocks.txt:https://www.unicode.org/Public/17.0.0/ucd/Blocks.txt,Unicode 联盟 Unicode 字符数据库 PropList.txt:https://www.unicode.org/Public/17.0.0/ucd/PropList.txt,Unicode 联盟 Unihan 数据库,Unicode 18.0 变更说明:https://www.unicode.org/versions/latest/联盟 Unihan中日韩汉字常见问题(英文),Unicode 数据库查询:https://www.unicode.org/charts/unihan.html联盟 Unicode 中日韩汉字常见问题:https://www.unicode.org/faq/han_cjk.html