【问题标题】:Normalization needed after case folding案例折叠后需要标准化
【发布时间】:2013-08-09 18:37:40
【问题描述】:

给定一个 NFC 规范化字符串,对该字符串应用全大小写折叠,我可以假设结果也是 NFC 规范化的吗?

我不明白 Unicode 标准在这句话中试图告诉我什么:

规范化也与案例折叠相互作用。对于任何字符串 X,让 Q(X) = NFC(toCasefold(NFD(X)))。换句话说,Q(X) 是结果 对 X 进行归一化,然后将结果折叠起来,然后将 结果转换为规范化表格 NFC 格式。因为路 定义了归一化和大小写折叠,Q(Q(X)) = Q(X)。 重复应用 Q 不会改变结果;案例折叠是 在任一归一化形式的规范归一化下关闭 NFC 或 NFD。

【问题讨论】:

    标签: unicode normalization unicode-normalization case-folding


    【解决方案1】:

    你问了两个问题:

    问题 1:toCasefold(NFC(X)) 二进制是否等于 NFC(toCasefold(NFC(X)))

    标准没有明确回答这个问题。 (我希望答案是肯定的,案例折叠不会影响规范化,但我没有证据。)

    问题 2:引用中的 Unicode 标准告诉我什么?

    标准只是说在规范标准化后没有必要再次进行大小写折叠。换句话说,规范规范化(到 NFC 或 NFD 形式)不会将任何字符的大小写从大写更改为小写,反之亦然。这没有回答您的第一个问题。

    并不是说在大小写折叠后是否有必要再次进行规范归一化。

    【讨论】:

      【解决方案2】:

      大小写折叠后,Unicode 字符串可能不在 NFC 中。例如,U+00DF(拉丁小写字母 SHARP S)后跟 U+0301(组合重音)。

      X = U+00DF U+0301
      NFC(X) = U+00DF U+0301
      toCasefold(NFC(X)) = U+0073 U+0073 U+0301
      NFC(toCasefold(NFC(X))) = U+0073 U+015B
      

      【讨论】:

      • 解释:ß后跟一个组合变音符号,不能组合。将其转换为 ss 后跟标记,突然是的。 (德语)
      猜你喜欢
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2014-09-30
      • 1970-01-01
      • 2021-11-08
      • 2011-04-19
      相关资源
      最近更新 更多