僕の長年の疑問を解決しようと思います。それはコンピュータが「あ」という文字をどのように理解しているかです。同じ疑問を持たれている方は多いはず、、、?
1バイト文字
1bitは0か1が入る箱です。これが8つ集まって1byteです。1byteは00000000~11111111のように表現できるので例えば- 00000000を「あ」
- 00000001を「い」

Unicode
上でUnicodeなるものが登場しました。これも文字コードの一種です。- Unicode: 世界中で使われている文字や記号たち
- JIS: 平仮名とか
- ASCII: アルファベットと一部の記号
UTF-8
これは符号化方式です。他にShift-JSなどがあります。文字コードを定義したにもかかわらず、なぜこんなものが必要なんでしょう?複数の文字コードを併用する際に必要になるそうです。- Unicode: UTF-8
- JS: Shift-JS
コードポイント
上の1byteの文字でやったように世界中の文字(Unicode)に対して同様の操作を行った時に付与される個別のコードをコードポイントと呼びます。16真数表示が一般的で先頭に「U+」がつきます。
正直よく分からないのですが、第ゼロ面の基本多言語面(BMP)だけとりあえず気にすれば良さそうです。
BMPとか
BMPは第ゼロ面です。コード位置はU+0000~U+FFFFです。これをもう少し細かくみます。- 1byte(U+0000~U+007F)
- 2byte(U+0080~U+07FF)
- 3byte(U+0800~U+FFFF)
Conclusion
とりあえずいろんな方式や文字コードがあったのでコンピュータが「あ」をどのように受け取っているか正確なことはわからないがイメージはできた。UTF-8が最もポピュラーらしいので「あ」は「\xe3\x81\x82」ということにしよう。この文字はなんバイト?
もうこの時点で、「あ」がなんバイトなんだ、のような話はあまり意味を為さないと思えてくると思いますが、少しまとめます。異体字セレクタ
元号が令和になりました。で、この「令」の漢字色々ありますよね。経済産業省のホームページには次のような質問がありました。


Cのメモリについて勉強しているときにふと気になって調べると色々わかって楽しかったです。でわ
Reference
- https://www.key-shortcut.com/en/writing-systems/ひらがな-japanese
- https://ja.wikipedia.org/wiki/異体字セレクタ
- https://www.meti.go.jp/policy/it_policy/kaigen/faq.html
- https://opentype.jp/charactercode.htm
- https://tech.nikkeibp.co.jp/it/article/COLUMN/20100126/343783/
- https://tech.sanwasystem.com/entry/2017/11/13/102531
- https://elite-lane.com/difference-between-unicode-and-utf-8-and-utf-16-and-utf-32/
- http://appakumaturi.hatenablog.com/entry/20120414/1334334986