文字・テキスト

Unicode正規化 (NFC/NFD/NFKC/NFKD) 変換

文字列を Unicode の4つの正規化形式 (NFC/NFD/NFKC/NFKD) に変換し、コードポイント数の違いを比較表示します。濁点や全角文字の「見た目は同じでも違う文字列」を確認できます。

使い方

上の欄に文字列を貼り付けると、NFC・NFD・NFKC・NFKD の4形式に変換した結果とコードポイント数を即時に表示します。見た目が同じでも内部のコードポイント列が異なる文字列 (濁点つきカタカナの合成済み文字と「文字+結合文字」など) を比較できます。処理はブラウザ内の String.prototype.normalize() のみで行い、入力をサーバーに送信しません。

計算の根拠

Unicode コンソーシアムが定める Unicode Standard Annex #15: Unicode Normalization Forms (UAX #15) が、4つの正規化形式を規定しています。NFC (正規等価の合成) と NFD (正規等価の分解) は見た目が同一になる文字を「正規等価」の範囲で統一し、NFKC・NFKD はさらに「互換等価」(全角英数字と半角英数字、丸数字「①」と「1」、単位記号「㌔」と「キロ」など、見た目は違うが意味が近い文字) まで同一視して変換します。例えば濁点つきの「ガ」(合成済み1コードポイント) と「カ」+結合文字 U+3099 (2コードポイント) は、見た目は同じでも元の文字列としては異なり、文字列の等価比較 (===) や検索でヒットしない原因になります。NFC に揃えればどちらも同じ1コードポイントの「ガ」に統一されます。NFKC・NFKD は文字の情報を一部失う (「①」が「1」になると丸囲みの情報が消える) ため、表示用ではなく検索・比較用の正規化に向くとされています。

よくある用途

場面 使う形式 理由
フォーム入力やファイル名の文字列比較・重複チェック NFC macOS は NFD、Windows/Web は NFC で保存されることが多く、同じ文字列が不一致になるのを防ぐ
全文検索・あいまい検索のキー生成 NFKC 全角/半角・丸数字などの表記差を吸収してヒット率を上げる
正規化前後の差分確認 NFD 合成文字がどの結合文字から成るかを確認する

既存ツールの「全角・半角変換」(zenkaku-hankaku-henkan) は英数字とカタカナのみを対象にした個別の対応表による変換ですが、NFKC はそれを含むより広い範囲 (丸数字、単位記号なども) をまとめて正規化します。用途に応じて使い分けてください。

関連ツール

公開: 2026-11-04