AZ Tools

Unicode 规范化 (NFC, NFD, NFKC, NFKD)

文本

同样可见的文本可能以不同的码点序列存储 — é 可以是一个预组合字符(U+00E9),也可以是 'e' 加一个组合重音(U+0065 U+0301)。Unicode 规范化把文本改写为规范形式,使看起来相同的字符串比较相等、排序可预测,并能在文件系统与数据库间往返。NFC 组合为最短的预组合形式(存储与 Web 的最佳默认);NFD 完全分解(macOS 文件名常见);NFKC 与 NFKD 还会应用兼容映射,折叠连字(fi → fi)、全角字符(2024 → 2024)以及罗马数字(Ⅻ → XII)等形式。还可去除组合标记以完全移除重音。对比表显示每种形式的码点与 UTF-8 字节长度,并标出你的输入已匹配哪一种 — 便于发现你以为是 NFC 实则为 NFD 的数据。全部在本地运行;你的文本绝不离开浏览器。

规范化输出 · 17 字符 · 32 字节

Café file 2024 Ⅻ ①

输入已是 NFC 形式。

所有形式对比

形式字符字节= 输入?
NFC1732
NFD1833
NFKC2021
NFKD2122

NFC 是存储与 Web 上最安全的默认。NFKC/NFKD 与去除变音符号有损 — 勿用于须保持精确的文本。

使用方法

  1. 在输入框粘贴或输入文本。
  2. 选择目标形式(NFC、NFD、NFKC、NFKD)并复制规范化输出。
  3. 开启「去除变音符号」也可移除重音,并查看表格了解输入已是哪种形式。

常见问题

我该用哪种形式?
NFC 是存储、传输与 Web 上最安全的默认 — 它是最短的规范形式,也是多数系统所期望的。当系统要求分解文本时(如某些 macOS 场景)使用 NFD。仅在你确实想要兼容折叠(连字、全角、上下标折叠)时才用 NFKC/NFKD,因为它们是有损变换。
「去除变音符号」做什么?
它先分解文本(NFD),移除所有组合标记,再重新规范化为你选择的形式 — 于是 'café' 变成 'cafe','Crème Brûlée' 变成 'Creme Brulee'。这对生成 ASCII 别名或忽略重音的搜索键很有用,但在许多语言中会改变含义,因此不要用于必须保持正确的文本。
为何各形式的字节数不同?
分解形式(NFD/NFKD)通常使用更多码点 — 预组合的 'é' 在 UTF-8 中是一个 2 字节字符,而 'e' + 组合重音是两个字符共 3 字节。兼容形式则两种皆可能。表格可比较精确的码点与字节长度。
规范化可逆吗?
NFC ↔ NFD 在规范等价性上保留信息且可逆。NFKC/NFKD 不可逆 — 连字或全角数字一旦折叠,原有区别就丢失了。去除变音符号同样是单向的。

相关工具