乐趣区

关于unicode:Unicode-标准化

Unicode 中有些非凡的字符,能够由其余不同的特殊字符组合进去。例如 ñ (U+00F1) 和 (U+006E U+0303)。这两个字符在展示和含意上是齐全等价的,但其编码却是不同的。为了对这种字符进行比拟,就须要在比拟前先进行标准化 (Normalization) 解决。

Unicode 定义了四种标准化模式 (Unicode Normalization Form):

合成 合成再重组
规范等价 NFD (Normalization Form Canonical Decomposition) NFC (Normalization Form Canonical Composition)
兼容等价 NFKD (Normalization Form Compatibility Decomposition) NFKC (Normalization Form Compatibility Composition)

阐明:

  • 合成与重组:

    • 合成:就是把字符能拆的全拆开,例如:

      • ñ (U+00F1) 拆成 U+006E U+0303。
    • 重组:就是把拆开的字符能组的再全组起来,例如:

      • (U+006E U+0303) 组合成 U+00F1。
  • 规范与兼容:

    • 规范等价:就是只有含意和长得完全相同的两个字符才相等,例如:

      • ñ (U+00F1) 和 (U+006E U+0303) 能够相等;
      • (U+FB00) 和 ff (U+0066 U+0066) 不能相等。
    • 兼容等价:就是只有长得差不多就能够相等了,规范等价的肯定也是兼容等价的,例如:

      • (U+FB00) 和 ff (U+0066 U+0066) 也能够相等;
      • ñ (U+00F1) 和 (U+006E U+0303) 更是能够相等了。

示例:

阐明 显示 标准化模式 标准化后
合成与重组的区别 ñ NFD/NFKD U+006E U+0303
合成与重组的区别 NFC/NFKC U+00F1
规范与兼容的区别 NFD/NFC U+FB00
规范与兼容的区别 NFKD/NFKC U+0066 U+0066
规范与兼容的区别 ff NFD/NFC/NFKD/NFKC U+0066 U+0066

相干文章:

  • 详解字符编码与 Unicode
退出移动版