Unicode・文字コード確認
「同じに見えるのに一致しない」「文字数が合わない」「コピーしたら変な記号が混じる」といったときに、文字列の中身をバイト単位で確かめられます。
🔒 入力内容はお使いのブラウザ内だけで処理され、サーバーには送信されません。
エスケープ形式で出力
逆変換(コード → 文字)
使い方
- 調べたい文字列を上の欄に貼り付けます。コードポイント数・UTF-16 コードユニット数・UTF-8 バイト数・見た目の文字数がすぐに表示されます。
- 見えない文字や結合文字が含まれていると、その数と注意が表示されます。「可視化した文字列」で、どこに入っているかを ⟨ZWSP⟩ のような印で確認できます。
- 「1 文字ごとの詳細」で、各文字のコードポイント、UTF-8、UTF-16、分類を確認します。
- プログラムに書くときは「エスケープ形式で出力」から言語を選びます。
U+3042やあを文字に戻したいときは「逆変換」に貼り付けます。
表示の決まり
| 項目 | 扱い |
|---|---|
| コードポイント | Unicode の番号。U+ に 16 進 4〜6 桁 |
| UTF-8 | ASCII は 1 バイト、ひらがな・漢字は 3 バイト、絵文字は 4 バイト |
| UTF-16 | JavaScript の内部形式。U+10000 以上は 2 コードユニット(サロゲートペア) |
| 見た目の文字数 | 結合文字、異体字セレクタ、ZWJ 連結を 1 つにまとめた数。Intl.Segmenter 対応のブラウザではそれを使います |
| 分類 | コードポイントの範囲による簡易分類です。正式な文字名は持っていません |
| 見えない文字 | ゼロ幅スペース、ZWJ、BOM、ソフトハイフン、双方向制御文字、制御文字、異体字セレクタ、結合文字 |
| NFC 正規化 | 「か」+ 濁点のような分解された形を合成してから分解します |
| 逆変換 | 認識できる形式だけ変換し、それ以外はそのまま残します。😀 は 1 文字に結合します |
こんな時に
- 検索やフォームの照合で一致しない: 両方の文字列を貼って、ゼロ幅文字や結合文字、全角・半角の違いを探します。
- 氏名や住所の異体字を扱う: 異体字セレクタの有無と、環境によって表示が変わる可能性を確認します。
- 文字数制限がバイト数で決まっている: UTF-8 バイト数を見ます。
- コードに文字を直接書きたくない: エスケープ形式で出力すれば、エディタの文字コード設定に左右されません。
注意
- 双方向制御文字(U+202E など)は表示上の並びを入れ替えるため、ファイル名やソースコードに混入すると見た目と中身が食い違います。外部から受け取った文字列に含まれていた場合は、意図を確認してから使ってください。
- 大きな文字列では、詳細の表は先頭 3,000 文字までを表示します。統計とエスケープ出力は全体が対象です。
よくある質問
見た目が同じ文字なのに検索や比較で一致しません。
よくある原因は 3 つです。(1) 結合文字: 「が」が「か」+ 濁点(U+3099)の 2 文字で表されている(NFC と NFD の違い)。(2) ゼロ幅文字: U+200B などの見えない文字が間に入っている。(3) 似た別の文字: 全角と半角、ギリシャ文字やキリル文字の同形文字、「〜」と「~」など。本ツールに両方の文字列を貼って、コードポイントを比べてください。
絵文字が 1 文字なのに文字数が 2 以上になります。
絵文字の多くはコードポイント 1 つでも UTF-16 では 2 コードユニット(サロゲートペア)になります。さらに肌の色(修飾子)や国旗(地域指示子 2 つ)、家族の絵文字(ゼロ幅接合子 U+200D でつないだ複数の絵文字)は、見た目 1 つでも複数のコードポイントからなります。JavaScript の length はコードユニットの数を返すため、見た目の文字数とは一致しません。
異体字セレクタとは何ですか?
漢字の字形の違い(「葛」の「ヒ」の部分の形など)を指定する見えない文字で、U+FE00〜FE0F と U+E0100〜E01EF の範囲です。前の漢字と組にして使います。対応していないフォントやシステムでは無視されるか、豆腐(□)として表示されることがあります。氏名などで異体字セレクタ付きの文字を受け取ったときは、本ツールで確認できます。
逆変換ではどの形式が使えますか?
U+3042、\u3042、\u{1F600}、\x41、あ、あ、0x3042、%E3%81%82(URL エンコード)を混ぜて書けます。形式に当てはまらない部分はそのままの文字として残します。