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」