KDOC 80: 「あ」がどうして343 201 202になるのか

この文書のステータス

  • 作成
    • 2024-02-07 貴島
  • レビュー
    • 2024-02-08 貴島

概要

Localeが日本に設定されていないときにファイルを表示したところ、謎の数字に遭遇した。「あ」とつけたファイル名が ''$'\343\201\202' と表示された。これはUTF-8エンコードのバイト列なのだが、変換方法を調べる。

変換方法

  • 343 201 202 (8進数)
  • E3 81 82 (16進数)
  • 11100011 10000001 10000010 (2進数)
  • 先頭ビットが“1110”なので3バイト文字と判定できる1
  • 2バイト目以降はビットパターン“10”で始まる
  • 1110[0011] 10[000001] 10[000010] (2進数)
  • パターンを抜いたシーケンスを取り出す
  • 0011 0000 0100 0010 (2進数)
  • 3 0 4 2 (10進数)
  • 「あ」のUTF-8コードポイントは U+3042

関連

Footnotes:

1

任意のバイトの先頭ビットが“0”の場合は1バイト文字。“10”の場合は2バイト以上の文字の2番目以降のバイト。“110”の場合は2バイト文字の先頭バイト。“1110”の場合は3バイト文字の先頭バイト。“11110”の場合は4バイト文字の先頭バイトであると判定できる。先頭ビットを見るだけで、バイト長が確定する仕組み。