0

デコード結果

非正規化
非正規化(互換)

エンコード結果

正規化
正規化(互換)

Unicode正規化について

Unicode正規化とは、文字を分解・合成することをいいます。Unicodeの文字は、見た目は同じでも複数の表現方法が存在するものがあります。例えば、「â」は「â」(U+00E2)の1つのコードポイントとしても表せますし、「a」(U+0061)と「 ̂」(U+0302)の2つの分解されたコードポイント(基底文字+結合文字)でも表せます。前者を合成済み文字、後者を結合文字列(combining character sequence, CCS)と呼びます。

Unicode正規化には、以下の種類があります。

正規化形式説明
Normalization Form D (NFD)正準等価で分解「â」(U+00E2) -> 「a」(U+0061) + 「 ̂」(U+0302)
Normalization Form KD (NFKD)互換等価で分解「fi」(U+FB01) -> 「f」(U+0066) + 「i」(U+0069)
Normalization Form C (NFC)正準等価で分解し再度合成「â」(U+00E2) -> 「a」(U+0061) + 「 ̂」(U+0302) -> 「â」(U+00E2)
Normalization Form KC (NFKC)互換等価で分解し、正準等価で再度合成「fi」(U+FB01) -> 「f」(U+0066) + 「i」(U+0069) -> 「f」(U+0066) + 「i」(U+0069)

正準等価は、視覚的および機能的に等価な文字を保った状態で正規化します。 例. 「â」 <-> 「a」 + 「 ̂」

互換等価は、正準等価の他に、意味的に異なる形をとる文字も正規化の対象となります。 例. 「fi」 -> 「f」 + 「i」