Unicode 规范化工具 — NFC、NFD、NFKC、NFKD 在线转换
文本和文件名的 Unicode 规范化工具,可修复 macOS 分解形式的文件名
在浏览器中处理 · 不上传任何内容
规范化形式
要修复在 Mac 上创建的带重音字母或韩文的文件名等分解文本(通常是 NFD),请选择 NFC。
转换文本
示例以分解形式(NFD)保存,和 macOS 保存文件名的方式一样。它看起来相同,但比较时是不同的文本。
- 0 个分解的韩文字母
- 0 个会被 NFKC 改变的兼容字符
已转换为 NFC:23 个码点 → 20 个
Résumé – Café 报告.pdf
显示码点
- 转换前
- U+0052 U+0065 U+0301 U+0073 U+0075 U+006D U+0065 U+0301 U+0020 U+2013 U+0020 U+0043 U+0061 U+0066 U+0065 U+0301 U+0020 U+62A5 U+544A U+002E U+0070 U+0064 U+0066
- 转换后
- U+0052 U+00E9 U+0073 U+0075 U+006D U+00E9 U+0020 U+2013 U+0020 U+0043 U+0061 U+0066 U+00E9 U+0020 U+62A5 U+544A U+002E U+0070 U+0064 U+0066
批量修复文件名
每行粘贴一个文件名,或选择文件,下载文件名已规范化的 ZIP。文件不会离开你的浏览器。
使用浏览器的 String.prototype.normalize 应用 Unicode 标准附录 #15(Unicode Normalization Forms)。NFC 和 NFD 绝不会改变文字的外观或含义;NFKC 和 NFKD 还会折叠全角字母(A→A)、带圈数字(①→1)和单位符号(㎏→kg)等兼容字符,所以文字的外观可能改变。ZIP 中的文件名以 UTF-8 保存。
功能简介
Unicode 规范化工具让看起来相同的文本在底层也真正相同。同一个字符可以有不止一种存储方式:“é”可以是一个码点,也可以是“e”后面跟一个组合重音符;一个韩文音节可以是一个码点,也可以是三个字母(자모)。两种形式混在一起,就会出现搜索不到、文件名重复、上传被拒等问题。粘贴文本或文件名,选择一种规范化形式,即可得到一致的输出。
使用方法
- 选择一种形式。修复来自 macOS 的分解文本,选 NFC 就对了。
- 把文本粘贴到第一个输入框。结果会立即出现,并显示分解的韩文字母和兼容字符的数量。
- 打开“显示码点”,对比转换前后的值。
- 在文件名区域,每行粘贴一个文件名,或选择文件。
- 如果选择了文件,就下载文件名已规范化的 ZIP。
工作原理
- 使用浏览器的 String.prototype.normalize,应用 Unicode 标准附录 #15(Unicode Normalization Forms)中的四种形式。
- 分解的韩文按组合用字母(U+1100–U+11FF 及其扩展区块)计数。用键盘输入的 ㅋ 这类兼容字母不算作分解形式。
- 兼容字符是指 NFKC 形式与 NFC 形式不同的字符。
- ZIP 中的文件名以 UTF-8 保存,文件内容不重新压缩直接存入。每次最多 200 个文件、500 MB;在手机和平板上为 150 MB,因为 ZIP 是在内存中生成的。
示例
| 输入 | 形式 | 结果 |
|---|---|---|
| cafe + U+0301(5 个码点) | NFC | café(4 个) |
| café | NFD | cafe + U+0301 |
| A①㎏fi | NFKC | A1kgfi |
| 分解形式的 한글.txt(10 个码点) | NFC | 한글.txt(6 个) |
| ㈜ | NFKC | (주) |
常见问题
为什么 Mac 上的文件名到了别处会显示异常?
macOS 以分解形式(NFD)保存文件名,é 会存成 e 加一个组合重音符,韩文音节会拆成单独的字母(자모)。一些 Windows 程序和网页表单会把这些部件分开显示,或者把文件名当作不同的文本。转换为 NFC 就能重新组合起来。
能直接重命名我电脑上的文件吗?
网页无法重命名你磁盘上的文件。可以选择文件,下载一个文件名已规范化的 ZIP,或者复制修正后的文件名列表。
NFC 和 NFKC 有什么区别?
NFC 只组合等价的字符,文字的外观和含义都不变。NFKC 还会把全角字母、带圈数字、fi 这样的连字以及 ㎏ 这样的单位符号等兼容字符折叠成普通字符,因此文字的外观可能改变。
两个字符串看起来一模一样,为什么还要在意?
NFC 和 NFD 的文本看起来一样,比较时却不相等,会导致搜索、查重和上传出问题。打开“显示码点”就能看到实际的值。
会上传任何内容吗?
不会。规范化和生成 ZIP 都在你的浏览器中完成。