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
関連
- KDOC 76: コンテナでLocaleを設定する。で挙動を調べているときに遭遇した
- UTF-8 - Wikipedia
Footnotes:
1
任意のバイトの先頭ビットが“0”の場合は1バイト文字。“10”の場合は2バイト以上の文字の2番目以降のバイト。“110”の場合は2バイト文字の先頭バイト。“1110”の場合は3バイト文字の先頭バイト。“11110”の場合は4バイト文字の先頭バイトであると判定できる。先頭ビットを見るだけで、バイト長が確定する仕組み。