核心功能剖析 · 文件缺失引发的连锁反应
同一段文字在 Unicode 编码体系中往往存在多种等价写法。例如带声调的字符“é”,既可以表示为单码位 U+00E9,也可以表示为基字符 U+0065 加组合声调 U+0301。normalization.dll 依据 Unicode 标准中关于规范化形式的算法,把字符串映射为统一的目标序列:NFC 合成形式、NFD 分解形式,以及面向兼容字符的 NFKC、NFKD 形式,从码位层面消除“同形不同码”带来的歧义。
Win32 的 CompareStringEx、LCMapStringEx、FindNLSStringEx 等区域敏感 API,在执行比较、大小写折叠、排序权重计算之前,都会先借助该组件完成规范化。缺少这一步,索引构建、数据去重、模糊匹配以及数据库排序规则都会出现偏差,同一份数据在不同编码路径下可能得出不同结论。
域名中的非 ASCII 字符需要经过 Nameprep 与 Punycode 编码才能进入 DNS 查询链路,IdnToAscii、IdnToUnicode 等接口的规范化与字符映射工作同样由该库承担。浏览器与系统网络栈在访问中文域名、国际化邮箱地址时会间接加载它。
输入法编辑器与文本服务框架在候选词去重、字典检索、用户词库比对时,需要统一的字符序列才能保证命中率与排序合理性,这一层同样依赖规范化能力提供的支撑。
排查方向:使用 sfc /scannow 与 DISM /Online /Cleanup-Image /RestoreHealth 修复系统文件;核对同版本系统中该文件的存在情况与数字签名状态;借助依赖查看工具定位实际调用方,不要从来源不明的站点单独下载替换。