Unicode正規化ツール
テキストをNFC、NFD、NFKC、NFKDの各フォームに正規化し、文字レベルの詳細とともに結果を並べて比較します。
このツールについて
Unicode正規化ツールは、Unicode標準で定義された 4つのUnicode正規化形式にテキストを変換する無料のブラウザベースツールです: NFC(正準合成)、NFD(正準分解)、NFKC(互換合成)、 NFKD(互換分解)。
Unicodeでは、同じ視覚的な文字を複数の方法で表現できます。例えば、
éは単一の合成済みコードポイント(U+00E9、LATIN SMALL LETTER E WITH ACUTE)
として保存することも、2つのコードポイント(U+0065 + U+0301、eと結合アキュートアクセント)
として保存することもできます。これらは画面上では同じに見えますが、バイト列が異なるため、
文字列比較、検索、データベース検索、セキュリティチェックで微妙なバグを引き起こす可能性があります。
個々の文字を詳細に検査するには、 Unicode Inspectorをお試しください。 ファイルやテキストのエンコーディングを検出するには、 エンコーディング検出ツールが文字セットを識別できます。
すべての正規化はJavaScriptの組み込みString.prototype.normalize()メソッドで実行されます。
データがブラウザから送信されることはありません — 処理は100%クライアントサイドです。
使い方
- 入力テキストエリアにテキストを貼り付けるか入力します。アクセント記号、合字、CJKテキストが正規化の違いを示すのに最適です。
- Compare Formsタブで、NFC、NFD、NFKC、NFKDに同時に正規化されたテキストを、各フォームのコードポイント数とバイトサイズ付きで確認します。
- Same as input / Changedバッジを見て、どのフォームがテキストを変更するかをすばやく確認します。
- Comparison Summaryテーブルで、すべてのフォームにわたるコードポイント、UTF-8バイト、UTF-16ユニットの並列比較を確認します。
- Character Breakdownタブに切り替えて、各書記素がコンポーネントのコードポイントに分解される様子を名前とバイトサイズ付きで確認します。
- 任意の正規化フォームのCopyボタンをクリックして、正規化されたテキストをクリップボードにコピーします。
- Clearボタンで入力をリセットし、新しいテキストで最初からやり直します。
Unicode正規化の人気の例
よくある質問
Unicode正規化とは何ですか?
Unicode正規化は、等価な文字シーケンスが同一に保存されるように、テキストを標準的な形式に変換するプロセスです。Unicode標準は4つの正規化形式を定義しています:NFC、NFD、NFKC、NFKD。これにより、文字がどのようにエンコードされたかに関わらず、テキストの比較、検索、保存の一貫性が確保されます。
NFCとNFDの違いは何ですか?
NFC(正準合成)は、基底文字と結合マークを可能な場合に単一の合成済み文字に結合します。例えば、'e' + 結合アキュートアクセントは'é'になります。NFD(正準分解)はその逆で、合成済み文字を基底文字と結合マークに分解します。どちらの形式も正準等価であり、同じテキストを表現します。
NFC/NFDの代わりにNFKCやNFKDを使うべきなのはいつですか?
視覚的に類似しているが意味的に異なる文字を共通の形式にマッピングする互換分解が必要な場合にNFKCまたはNFKDを使用します。例えば、合字'fi'(fi)はNFKC/NFKDでは'fi'になります。これは検索インデックス、ユーザー名検証、セキュリティチェックに有用です。
アプリケーションにはどの正規化形式を使うべきですか?
NFCが最も一般的に推奨される形式で、Web向けのW3C推奨でもあります。macOS HFS+のファイル名やほとんどのデータベースシステムのデフォルトでもあります。視覚的に類似した文字を同一として扱いたい検索・比較タスクにはNFKCを使用します。
データは安全ですか?
はい。すべての正規化はJavaScriptの組み込みString.prototype.normalize()メソッドを使用してブラウザ内で完全に実行されます。テキスト、文字、その他のデータがサーバーに送信されることはありません。ブラウザの開発者ツールのネットワークタブで確認できます。
正規化はテキストの見た目を変えますか?
NFCとNFDは見た目を変えません — 基になるコードポイント表現のみが変わります。NFKCとNFKDは互換文字を置き換えるため、見た目が変わる場合があります。例えば、上付き数字が通常の数字になったり、合字が個別の文字に分割されます。
正規化は文字列比較にどう影響しますか?
正規化なしでは、視覚的に同一の2つの文字列がバイト単位の比較で等しくならない場合があります。両方の文字列を比較前に同じ形式に正規化することで、一貫した結果が保証されます。これはデータベース、検索エンジン、認証システムにとって重要です。
関連ツール
Unicode文字インスペクター
Unicode文字のコードポイント、UTF-8/UTF-16エンコーディング、文字名、カテゴリ、ブロック情報を表示します。
エンコーディング検出
テキストやファイルの文字エンコーディング(UTF-8、ASCII、ISO-8859-1、Shift_JISなど)を信頼度スコア付きで検出します。
テキストケース変換
camelCase、PascalCase、snake_case、kebab-caseなどの命名規則間でテキストを変換します。
文字列エスケープ/アンエスケープ
JSON、JavaScript、HTML、URL、SQL、CSV形式の文字列をエスケープ・アンエスケープします。