# 异体字、变体选择符和汉字描述序列

> 适合谁看：遇到「同一个字但写法不一样，又必须按某种写法显示」的需求，比如户籍、古籍、日本人名的人。

## 异体字

读音和意思相同、写法不同的字叫异体字，例如「峰」和「峯」。

- 如果写法差别足够大，Unicode 会给它们**不同的码位**，可以直接输入；
- 如果差别很细微，Unicode 认为是同一个字，只给**一个码位**，具体写法交给字体。见[《同一个字，为什么各地写法不同》](https://docs.cocobook.com/link/1275)。

第二种情况下，如果业务**必须**显示特定写法（例如人名证件要和登记的字形一致），就要用到「变体选择符」。

## 汉字变体序列（IVS）

做法是在字后面紧跟一个看不见的「变体选择符」（码位 U+E0100 到 U+E01EF），告诉字体「请显示这个字的第几种写法」：

> 基础字 + 变体选择符 = 一个指定的字形

- 这些组合需要在 Unicode 的「汉字变体数据库」（IVD）中登记；
- 已登记的集合包括 Adobe-Japan1、Hanyo-Denshi、Moji_Joho、MSARG、KRName、CAAPH 等，其中 Moji_Joho 集合最近一次在 2026 年 8 月增补；
- 多数集合服务于日本的人名和行政用字，也有服务于其他地区的集合；在中国大陆的日常中文场景中用得还不多。

## 使用 IVS 的前提

1. **字体支持**：字体里要有对应的变体字形和映射；不支持的字体会忽略选择符，显示默认字形；
2. **软件支持**：排版软件、浏览器要能正确处理（主流浏览器和操作系统一般都支持）；
3. **数据要保留**：复制、存储、截断字符串时不能把选择符丢掉；按「字符数」限制长度时，选择符也会占位置。

## 汉字描述序列（IDS）

有些字没有编码，或者想向别人说明一个字的结构，可以用「汉字描述字符」描述，例如：

- `⿰氵力` 表示左「氵」右「力」，即「氻」；
- `⿱艹田` 表示上「艹」下「田」。

常用的描述字符：`⿰` 左右、`⿱` 上下、`⿲` 左中右、`⿳` 上中下、`⿴` 全包围、`⿵` 上三包围等。Unicode 15.1 又增加了几个描述字符。

注意：**描述序列只是说明，不会自动变成那个字**，显示出来就是几个符号排在一起。适合用来记录、沟通、提交缺字反馈，见[《发现缺字怎么反馈》](https://docs.cocobook.com/link/1287)。

<p style="margin-top:2.5em;padding-top:.6em;border-top:1px solid #e6e6e6;font-size:.85em;color:#8a8a8a"><a href="https://docs.cocobook.com/link/1307#bkmrk-src-e06-ivs" style="color:inherit;text-decoration:none;border-bottom:1px dotted #bbb">参考资料</a></p>