UTF-8 is a brilliant design
UTF-8 — гениальное решение: 1–4 байта на символ, полная совместимость с 7-битным ASCII.
Старший бит первого байта сразу говорит, сколько байт идёт дальше:
| Паттерн 1-го байта | Длина | Пример |
|---|---|---|
0xxxxxxx |
1 | ASCII |
110xxxxx |
2 | |
1110xxxx |
3 | |
11110xxx |
4 |
Продолжения всегда 10xxxxxx.
Программа читает байт, по префиксу понимает длину, выделяет «полезные» биты, получает кодовую точку Unicode и выводит символ.
Пример:
хинди «अ» = 11100000 10100100 10000101 → U+0905.
Файл Hey👋 Buddy (13 байт):
H e y 👋 B u d d y
👋 кодируется 4 байтами 11110000 10011111 10010001 10001011 → U+1F44B.