ブラウザ内ツール

文字コードインスペクタ

文字がUTF-8でどうバイトになるかを、ビットテンプレート (0xxxxxxx / 1110xxxx 10xxxxxx…)レベルで分解して表示します。 UTF-16のサロゲートペア計算も見えます。

コードポイント 4UTF-8 11 バイトUTF-16 10 バイト(5 コード単位)UTF-32 16 バイト
AU+004110進 65
UTF-8411 バイト)
01000001
UTF-160041
U+304210進 12354
UTF-8E3 81 823 バイト)
111000111000000110000010
UTF-163042
😀U+1F60010進 128512
UTF-8F0 9F 98 804 バイト)
11110000100111111001100010000000
UTF-16D83D DE00サロゲートペア(上位 D800–DBFF + 下位 DC00–DFFF)
U+20AC10進 8364
UTF-8E2 82 AC3 バイト)
111000101000001010101100
UTF-1620AC

UTF-8は先頭バイトの上位ビットで長さが分かる自己同期符号です(0…=1バイト、110…=2、1110…=3、11110…=4、継続バイトは必ず 10…)。 灰色が固定の目印ビット、がコードポイント由来のビットです。BMP外(U+10000以上)はUTF-16でサロゲートペアになります。すべてブラウザ内で処理。

UTF-8のうまい設計

  • ASCII互換:U+0000〜007Fは1バイトでそのまま。既存の英数字テキストは変わらない。
  • 自己同期:先頭バイトを見れば長さが分かり、継続バイトは必ず 10…。途中から読んでも文字境界を復元できる。
  • バイト順の問題がない:UTF-16/32と違いエンディアンやBOMに悩まされにくい。だからWebの標準になった。