PHP

Если кодировка UTF8 восьмибитная, то почему тогда русская буква занимает два байта, а не один?

Она не всегда восьмибитная. 8 бит - минимум, а могут быть и 16 и 24 и 32, в зависимости от символа.
MB
Mereke Berdigaliyev
89 405
Лучший ответ
UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6).

ОТ 1 до 6 БАЙТ (каждый из которых 8 БИТ)
СБ
Сергей Балин
60 009
она восьмибитовая только для первой половины ASCII
Не вижу противоречий
Leonid Kodolov
Leonid Kodolov
24 328
Сергей Колчин Под русские буквы отводится 16 бит выходит, а не 8.
Как уже было сказано выше, UTF-8 - кодировка из ПЕРЕМЕННОГО количества 8-битных символов. Это означает, что за символ отвечает 1 байт - заголовок и от 0-я до (на данный момент) 5-ти байт. Символов Unicode около 100 тысяч, поэтому стараются всех не обидеть и алфавиты самых распространенных языков сделать покороче.

Вам ещё везёт, что для русских букв этот дополнительный байт только один и символ - 2 байтный. Например корейские иероглифы занимают 3 байта. Китайские - 4, и только иногда (самые редкие иероглифы) больше.

ЗЫ
То что русские буквы 2-байтные, не всегда верно. Есть ещё такие символы, как диакритические знаки, которые комбинируются с впереди идущим символов. Например, буква Ё может раскладываться как символ Е и горизонтальное верхнее двоеточие. Знаю, что это может быть использовано только для Ё и Й, но всё же...