Unicode ストリングの正規化
アプリケーションで、機能的および視覚的に等価である一方でコード・ポイント表現の異なる文字を等しい文字として扱う必要があります。 この動作は、Unicode ストリングの検索、ソート、または比較時に重要です。 この目標を達成するには、ストリングを正規化する必要があることがあります。 ただし、正規化によってパフォーマンスが低下する可能性があります。
Unicode ストリングは、正準等価であったり、互換性の上で等価である場合があります。 正準等価であれば、互換性の上でも等価です。
正準等価な文字 とは、 機能と表示の両方で等価である一方で、コード・ポイント表現が 異なる場合のある文字です。 これらの文字は表示上同一であるため、 ユーザーはそれらを区別できません。 例えば、 üという文字は、uと ¨ という文字列と正準等価です。
互換性の上で等価な文字 とは、意味体系上の意味に関わらず、等価であるプレーン・テキストの文字です。 これらの文字も、コード・ポイント表現が異なる 場合があります。 例えば、上付き文字および下付き文字の数表現は、対応する 10 進数字 と互換性の上で等価です。
Unicode ストリングの正規化の処理によって、正準等価または互換性の上で等価のいずれかであるすべてのシーケンスに対して、固有のコード・ポイント・シーケンスが生成されます。 したがって、正準等価なすべての文字で、バイナリー表現が 同一です。 Unicode ストリングは、Unicode 規格で定義されている 次のいずれかの正規化形式で正規化できます。
- 正規化形式 D (NFD; Normalization Form Canonical Decomposition)
- 文字は正準等価によって分解されます。
- 正規化形式 C (NFC; Normalization Form Canonical Composition)
- 文字は正準等価によって分解された後に合成されます。
- 正規化形式 KD (NFKD; Normalization Form Compatibly Decomposition)
- 文字は互換性等価によって分解されます。
- 正規化形式 KC (NFKC; Normalization Form Compatibly Composition)
- 文字は互換性等価によって分解された後に正準等価によって合成されます。
Unicode ストリングを正規化するには、NORMALIZE_STRING 組み込み関数を使用します。