text-henkan

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

見た目は同じなのに検索に引っかからない、ファイル名がずれる — 原因は Unicode の正規化形式の違いであることがよくあります。現在の状態を判定し、4 つの正規化形式に変換できます。

またはファイルを選ぶ

4 つの正規化形式

NFC は「が」を 1 文字にまとめる合成形。NFD は「か」+ 濁点の 2 文字に分解する分解形。NFKC / NFKD はそれに加えて互換文字を置き換えます — ①→1、ハンカク→ハンカク、A→A、㍿→株式会社 など。データベースへの投入前やキーワード比較の前処理には NFKC がよく使われます。

macOS のファイル名問題

macOS の HFS+ / APFS はファイル名を NFD に近い形で保存します。そのため Mac で作った「濁点入りのファイル名」を Windows や Linux に持っていくと、見た目は同じでも文字列としては一致しません。ZIP を展開したら日本語ファイル名が検索できない、Git の差分に同じファイルが 2 つ出る、といった症状が典型です。NFC に正規化すると解決します。

正規化で失われるもの

NFKC / NFKD は情報を落とす変換です。㍻(合字)や ½、上付き文字、丸数字は元の見た目に戻せません。表示用のテキストにはそのまま適用せず、検索キーや突合用のキーを作るときに使うのが安全です。

よくある質問

「が」が「か゛」に分かれて表示されます

NFD(分解形)になっています。NFC に変換すると 1 文字に合成されます。macOS 由来のファイル名やテキストでよく起きます。

どの形式を選べばいいですか?

保存・配布するテキストは NFC が標準です。検索キーやユーザー入力の突合には NFKC を使うと表記ゆれを吸収できます。NFD / NFKD は互換性検証など特殊な用途向けです。

正規化されているか確認できますか?

できます。入力が NFC か、NFD か、結合文字がいくつあるか、NFKC で変化する文字がいくつあるかを表示します。

絵文字は壊れませんか?

壊れません。絵文字の ZWJ シーケンスや異体字セレクタは正規化の対象外で、そのまま保持されます。

関連ツール

改行コード変換全角 ⇄ 半角文字数カウント重複行削除・並べ替えShift-JIS → UTF-8UTF-8 → Shift-JISEUC-JP → UTF-8UTF-8 → EUC-JP