入出力データはサーバーに送信されず、どこにも保存されません。すべての処理はブラウザ上で完結します。

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())で行われます。テキストはサーバに一切送信されません。

よくある質問


NFC と NFKC は何が違いますか?

どちらも分解後に合成しますが、NFCは正準等価な変換のみを行い、見た目の文字を保ちます。NFKCはさらに互換変種を畳み込み、全角AをASCII Aに、㈱を(株)に変換します。検索や識別子の比較にはNFKCが向きます。

入力したテキストはサーバーに送信されますか?

いいえ。正規化はブラウザ標準の String.prototype.normalize() を使ってローカルで実行され、入力したテキストがサーバーに送信されたり保存されたりすることはありません。

扱える文字数に制限はありますか?

明示的な上限はなく、ブラウザのメモリが許す範囲で長いテキストも処理できます。4形式の結果に加えてコードポイント列とUTF-8バイト数も併記されます。

macOS と他のOSでファイル名が一致しないのはなぜですか?

macOSのHFS+/APFSはファイル名をNFD(分解形式)で保存するため、NFCを使う他のシステムと見た目が同じでも内部表現が異なります。比較する際は両側をNFCに正規化してから突き合わせてください。

アクセント記号を取り除くにはどの形式を使えばよいですか?

NFKD(または NFD)で基底文字と結合マークに分解したうえで、正規表現 \p{M} などで結合マークを削除すると、アクセントを除去できます。