Unicode 正規化ツール (NFC / NFD / NFKC / NFKD)
NFC
0
文字 · 0
バイト (UTF-8)
NFD
0
文字 · 0
バイト (UTF-8)
NFKC
0
文字 · 0
バイト (UTF-8)
NFKD
0
文字 · 0
バイト (UTF-8)
使い方
結合文字・全角 ASCII・合字・互換文字などを含むテキストを入力すると、Unicode の 4 種の正規化形式(NFC・NFD・NFKC・NFKD)の結果が並列表示されます。コードポイント列と UTF-8 バイト数も確認できます。ファイル名比較・検索インデックス・データベース照合の問題のデバッグに役立ちます。
4 つの形式
Unicode は 4 つの正規化形式(UAX #15)を定義しています。「正準分解 vs 互換分解」と「分解後に合成するか」の 2 軸で異なります。
- NFC(正準合成):分解後に正準合成。テキスト保存・比較のデフォルト。「が」は「が」のまま(1 コードポイント)。
- NFD(正準分解):基底文字 + 結合マークに分解。「が」は「が」(「か」+ 結合濁点、2 コードポイント)になる。macOS HFS+ / APFS のファイル名形式。
- NFKC(互換合成):NFC に加えて互換変種(全角 A → ASCII A、㈱ → (株) など)を畳み込む。検索・識別子比較に使う。
- NFKD(互換分解):最も積極的。互換変種を畳み込み、かつ分解する。アクセント除去や大文字小文字無視検索に使う。
用途別の選び方
- ユーザー入力の保存:NFC(最も短く、互換性が高い)
- 検索インデックス:NFKC(「Café」「Cafe」「cafe」を同一視できる)
- OS 間でのファイル名比較:両側を NFC に正規化してから比較
- アクセント除去:NFKD で分解してから結合マーク(`\p{M}` 正規表現)を削除
安全性について
正規化はブラウザの標準 API(String.prototype.normalize())で行われます。テキストはサーバに一切送信されません。