Unicode / 文字コード解析
12 コードポイント / 13 UTF-16 コード単位 / 19 UTF-8 バイト
| # | 文字 | コードポイント | UTF-8 | UTF-16 LE | 分類 |
|---|---|---|---|---|---|
| 0 | H | U+0048 | 48(1B) | 48 00 | ASCII 印字可能 |
| 1 | e | U+0065 | 65(1B) | 65 00 | ASCII 印字可能 |
| 2 | l | U+006C | 6C(1B) | 6C 00 | ASCII 印字可能 |
| 3 | l | U+006C | 6C(1B) | 6C 00 | ASCII 印字可能 |
| 4 | o | U+006F | 6F(1B) | 6F 00 | ASCII 印字可能 |
| 5 | , | U+002C | 2C(1B) | 2C 00 | ASCII 印字可能 |
| 6 | U+0020 | 20(1B) | 20 00 | スペース | |
| 7 | 世 | U+4E16 | E4 B8 96(3B) | 16 4E | CJK 統合漢字 |
| 8 | 界 | U+754C | E7 95 8C(3B) | 4C 75 | CJK 統合漢字 |
| 9 | ! | U+0021 | 21(1B) | 21 00 | ASCII 印字可能 |
| 10 | U+0020 | 20(1B) | 20 00 | スペース | |
| 11 | 🌍 | U+1F30D | F0 9F 8C 8D(4B) | 3C D8 0D DF | 雑多な記号と絵文字 |
Unicode と文字エンコーディングについて
Unicode はすべての文字に一意の番号(コードポイント)を割り当てる国際標準です。 U+0041 のように U+ に続く16進数で表記します。
主なエンコーディング
- UTF-8: 可変長(1〜4バイト)。ASCII互換でウェブで最も広く使われる。
- UTF-16: 可変長(2または4バイト)。JavaScriptの内部表現。U+FFFF超の文字はサロゲートペアで表現。
- UTF-32: 固定長(4バイト)。全コードポイントを1対1で表現。
サロゲートペア
UTF-16では、U+10000以上の文字(絵文字など)はサロゲートペアと呼ばれる2つのコード単位(合計4バイト)で表現されます。 JavaScriptで str.length が文字数と一致しない原因の多くはサロゲートペアです。 スプレッド構文 [...str] を使うとコードポイント単位で正しく反復できます。
Unicode文字を解析する手順
- STEP 1文字化けや判別しにくい文字を入力します。
- STEP 2コードポイント、UTF-8・UTF-16列、文字分類を一文字ずつ確認します。
- STEP 3想定外の空白や結合文字を特定し、必要に応じて置換します。
具体的な利用例
半角スペースとノーブレークスペース、見た目の似たハイフン、絵文字のサロゲートペアを区別できます。CSV取込エラー、検索不一致、文字数のずれを調査する際の手掛かりになります。
結果を見るときの注意点
画面上の一文字が複数コードポイントで構成されることがあります。結合文字、異体字セレクタ、ゼロ幅接合子を含む絵文字では、コードポイント数と利用者が感じる文字数は一致しません。正規化による意味の変化にも注意してください。
入力データの扱い
処理はこのブラウザ内で完結し、入力したテキストやファイルは変換・解析のために外部サーバーへ送信されません。共有端末を使う場合は、作業後に入力欄とクリップボードの内容も消去してください。