26

Unicode 正規化に関する FAQには、次の段落が含まれています。

プログラムは、正規に相当する Unicode 文字列を常に等しいものとして比較する必要があります... Unicode 標準は、これに使用できる明確に定義された正規化形式を提供します: NFC および NFD。

と続きます...

どちらを使用するかは、特定のプログラムまたはシステムによって異なります。NFC は、従来のエンコーディングから変換された文字列との互換性が高いため、一般的なテキストに最適な形式です。... NFD と NFKD は、内部処理に最も役立ちます。

私の質問は次のとおりです。

「一般的なテキスト」に最適な NFC の理由。「内部処理」の定義と、NFD に任せるのが最適な理由は何ですか? そして最後に、何が「最良」であるかは気にせず、2 つの文字列が同じ正規化形式を使用して比較される限り、2 つの形式は交換可能ですか?

4

2 に答える 2

7
  1. NFC は、使用すべき一般的な常識形式でäあり、1 コード ポイントであり、それは理にかなっています。

  2. NFD は、特定の内部処理に適しています。アクセントを区別しない検索や並べ替えを行う場合、文字列を NFD に入れると、はるかに簡単かつ高速になります。もう 1 つの使用法は、より堅牢なスラッグ タイトルを作成することです。これらは最も明白なものにすぎません。他にもたくさんの用途があると確信しています。

  3. 2 つの文字列 x と y が正準等価である場合、
    toNFC(x) = toNFC(y)
    toNFD(x) = toNFD(y)

    そうですか?

于 2013-04-13T10:44:33.037 に答える