Unicode использует разные размеры для представления символов в UTF-8 и UTF-16, потому что это кодировки с переменной длиной. 1 Это значит, что один символ может быть закодирован разным количеством структурных единиц кодировки, то есть разным количеством байт. 1
UTF-8 использует от одной до четырёх единиц по восемь бит. 5 Если символ может быть закодирован одним байтом, UTF-8 закодирует его одним байтом. 1 Если нужно два байта, то используется два байта. 1 Так, например, латиница кодируется одним байтом, а кириллица — двумя байтами. 1
UTF-16 использует одну или две единицы по 16 бит. 5 Все символы как минимум двухбайтные, но их размер может увеличиваться до 4 байт. 1 Например, символы с кодами 0x0000–0xFFFF всегда занимают 2 байта, а символы с кодами от 0x10000 и больше — 4 байта. 3