你手机里的每一个汉字,背后都有一本写给机器的“数字天书”——解密 Unihan 数据库
在日常生活中,你或许从未听说过 Unihan 这个名字,但你今天在屏幕上划过的每一行汉字、在输入法里打出的每一个拼音、在手机上切换的每一次繁简转换,甚至银行系统成功录入某些罕见姓名时,背后都有它的身影。
它不是《新华字典》,也不是《康熙字典》,但它却是全球数十亿台智能手机、电脑和服务器里,唯一通行的汉字“总户籍册”。
这本隐藏在数字文明底层的“机器天书”,就是 Unihan(Unicode Han Database,统一码汉字数据库)。
一、 巴别塔的倒塌:计算机曾经“读不懂”汉字
要理解 Unihan,我们得先穿越回 20 世纪 80 年代那段数字世界的“战国时代”。
对于计算机来说,它本质上只认识 0 和 1。要把人类语言放进电脑,必须给每个字符编一个数字代号(也就是“编码”)。英文字母只有 26 个,加上符号也才一百多个,用一个简单的 ASCII 编码就能轻松搞定。
但汉字浩如烟海,各国各地区只能各显神通,自己关起门来编字典:
- 中国大陆制定了 GB 2312 和后来的 GBK;
- 中国台湾、中国香港使用了 Big5(大五码);
- 日本推出了 Shift_JIS;
- 韩国搞了 KS C 5601。
这导致了灾难性的后果——“乱码”横飞。一个用 Big5 编码写的繁体字网页,在大陆的电脑上打开,可能就变成了“烫烫烫”或者“锟斤拷”;中日两国的跨国邮件往来,往往伴随着满屏不可辨识的火星文。
为了打破这种语言隔阂,全球科技巨头和学者在 1990 年代初成立了统一码联盟(Unicode Consortium)。他们的野心是:为世界上每一个文字,都分配一个全球唯一、永远不冲突的数字编号。
二、 “中日韩越”大一统:汉字认祖归宗
在整理汉字时,Unicode 委员会面临了一个巨大的哲学难题:
日本汉字里的“国”、韩国汉字里的“國”、中国大陆的“国”与繁体“國”……到底算几个字?
如果完全按照各国的字体标准各自独立编号,不仅汉字数量会迅速撑爆当时的存储架构,更违背了“统一编码”的初衷。
于是,历史上著名的中日韩统一表意文字(CJK Unified Ideographs)工程启动了。文字学家们坐在一起,订立了一套“认同原则”(Unification Rules):如果两个字在字源、字义和结构上本质是一样的,不管它在日本、中国大陆还是韩国的写法有极其微小的笔画差异,它们在计算机底层都共享同一个编码(Code Point)。
比如汉字“中”,在全世界的 Unicode 系统里,它的编号永远都是十六进制的 U+4E2D。
但问题随之而来:
给汉字分好了号,计算机拿到的只是一串冷冰冰的数字代码。计算机怎么知道 U+4E2D 怎么读?部首是什么?有几画?它的繁体字是哪个?英语翻译成什么?
为了赋予这些编码以“血肉”,Unicode 联盟启动了一个伴生项目——Unihan 数据库。
三、 拆开看:Unihan 到底长什么样?
与我们书架上厚重的字典不同,Unihan 根本不是排版精美的书,而是一堆极其干燥、纯粹由机器读取的纯文本数据库文件(TSV 格式)。
在 Unihan 数据库里,每一个汉字都被贴上了几十个以字母 k 开头的专业属性标签(k 意为 Key)。
如果我们把汉字“中”在 Unihan 数据库里的档案调出来,它大概长这样:
U+4E2D kMandarin zhōng zhòng
U+4E2D kTotalStrokes 4
U+4E2D kRSUnicode 2.3
U+4E2D kCantonese zung1 zung3
U+4E2D kJapaneseOn CHUU
U+4E2D kHangul 중
U+4E2D kVietnamese trung
U+4E2D kDefinition central; center, middle; in the midst of; hit (target)
U+4E2D kKangXi 0079.030
看不懂那些缩写?把它们翻译成人话,其实就是一份详尽的汉字“档案卡”:
- 读音雷达(Readings):
kMandarin:普通话读音是zhōng和zhòng;kCantonese:粤语拼音是zung1和zung3;kJapaneseOn/kHangul/kVietnamese:在日本、韩国、越南的汉字音分别怎么念。
- 骨骼结构(Radical & Strokes):
kTotalStrokes:总笔画是 4 画;kRSUnicode:属于《康熙字典》第 2 号部首(丨),除去部首本身,剩余部分还有 3 画。
- 身世坐标(Dictionary Indices):
kKangXi:在权威的《康熙字典》第 79 页第 3 条。
- 对外简介(Definition):
kDefinition:用简短的英文概括字义——“central; center, middle...”。
随着 Unicode 版本的持续迭代,Unihan 收录的汉字已经从最初的 2 万多字,一路狂飙至如今的 近 10 万个汉字(涵盖甲骨文考据字、历代佛经古籍字、各地方言僻字、人名地名生僻字)。无论多冷僻的字,只要进入了 Unicode 规范,Unihan 就会为它建立这样的档案。
四、 理想很丰满,现实很“骨感”:Unihan 的那些奇趣与盲点
作为一个跨越数十年、由多国专家与计算机极客共同维护的庞然大物,Unihan 并不完美,甚至在实际工程应用中充满了让开发者哭笑不得的“学术陷阱”。
1. 它是“历史博物学者”,不是“现代语文老师”
如果你直接把 Unihan 的拼音数据打包做成一个小学生查字 App,大概率会被家长投诉。
为什么?因为 Unihan 的目标是学术和全文献兼容。它不仅记录现代普通话规范读音,还从古代韵书(如《广韵》《集韵》)里搜罗历史读音。
比如大家最熟悉的虚词“之”,在现代汉语里只有一个读音 zhī。但如果你去查 Unihan,它会告诉你这个字还有一个读音:zhū。这个读音来自两千年前《诗经》和先秦古音的假借音。对于计算机古籍检索来说这是宝藏,但对查字典写作业的孩子来说,这就是不折不扣的“噪声”。
2. “同形不同骨”的跨国较量
汉字在东亚各国的漫长演变中,产生了一些极其微妙的形态差异。
比如“骨”字上半部分那一折,中国大陆规范字朝**西(左)折,而日本和台湾地区规范字朝东(右)**折;又比如“直”字中间那一横,日本写法不碰到左右两壁。
按照汉字统一原则,它们被归为一个汉字编码。Unihan 必须在底层记录复杂的变体关系(kZVariant),再配合不同的字体文件(如思源黑体的中、日、韩不同版本),才能让同一个网页在东京看是日本字型,在北京看是规范汉字。
五、 为什么我们每个人都离不开它?
我们平时既看不到 Unihan 的文件,也不会直接去 Unicode 官网下载数据,为什么说现代人每天都在和它打交道?
- 当你在手机里打拼音时:输入法底层需要一套汉字拼音映射表。许多开源输入法和基础词库的底层种子数据,最早都是从 Unihan 的数据中清洗提炼出来的。
- 当公安或银行系统办理业务时:过去很多人因为名字里有生僻字(比如“䶮”、“赟”、“埗”),在电脑里打不出、录不上,甚至无法买机票、办社保。正是因为 Unicode 扩展区和 Unihan 数据库不断将生僻字标准化,各大操作系统才能支持这些汉字。
- 当软件做简繁转换或古籍检索时:从繁体字精准映射到简体字(而不是粗暴的错配),依靠的就是 Unihan 里细致梳理的变体字关系网络。
结语:藏在代码里的文明火种
在印刷时代,一个文明保存文字靠的是青铜鼎铭、竹简帛书与一部部卷帙浩繁的纸质辞书。
而在芯片与网络构筑的信息时代,要让一种古老的表意文字不被以拉丁字母为核心的计算机技术边缘化,需要极其漫长、琐碎、严肃的数字化工程。
Unihan 数据库就像是一座数字长城的地基。它没有炫目的交互界面,没有优美的文字释义排版,只有成百上千万行枯燥严谨的键值对代码。但正是这本藏在芯片里的“数字天书”,默默维系着近十万个汉字在虚拟世界里的秩序,让华夏千年的文字记忆,能够在数字时代毫发无损地跨越屏幕、连接世界。