NFC 或 NFD - 有什么区别?

Dej*_*kic 0 ingres

在 Ingres 中,DBA 在创建支持 Unicode 的 Ingres 数据库时有两个选择。createb 具有-iNFC(标准化形式 C)和-nNFD(标准化形式 C)的标志。文档对它们没有区别,描述几乎相同。

我们是否可以假设它们之间没有差异,或者实际上存在一些差异?

Jon*_*oni 5

区别在于字符是组合的(C)还是分解的(D)。

\n\n

带有“额外位”的字母(例如 \xc3\xa4)可以用不同的方式表示。有一个专门为带有两个点的字符创建的 Unicode 代码点。这就是组合形式,NFC。另一方面,您可以将其表示为通常的“a”,后跟添加两个点的组合字符。那是分解形式,NFD。

\n\n

分解形式占用更多空间,但组合形式使某些操作变得更加困难,例如比较字符串而忽略重音差异。

\n