PHP
Если кодировка UTF8 восьмибитная, то почему тогда русская буква занимает два байта, а не один?
Она не всегда восьмибитная. 8 бит - минимум, а могут быть и 16 и 24 и 32, в зависимости от символа.
UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6).
ОТ 1 до 6 БАЙТ (каждый из которых 8 БИТ)
ОТ 1 до 6 БАЙТ (каждый из которых 8 БИТ)
она восьмибитовая только для первой половины ASCII
Не вижу противоречий
Сергей Колчин
Под русские буквы отводится 16 бит выходит, а не 8.
Как уже было сказано выше, UTF-8 - кодировка из ПЕРЕМЕННОГО количества 8-битных символов. Это означает, что за символ отвечает 1 байт - заголовок и от 0-я до (на данный момент) 5-ти байт. Символов Unicode около 100 тысяч, поэтому стараются всех не обидеть и алфавиты самых распространенных языков сделать покороче.
Вам ещё везёт, что для русских букв этот дополнительный байт только один и символ - 2 байтный. Например корейские иероглифы занимают 3 байта. Китайские - 4, и только иногда (самые редкие иероглифы) больше.
ЗЫ
То что русские буквы 2-байтные, не всегда верно. Есть ещё такие символы, как диакритические знаки, которые комбинируются с впереди идущим символов. Например, буква Ё может раскладываться как символ Е и горизонтальное верхнее двоеточие. Знаю, что это может быть использовано только для Ё и Й, но всё же...
Вам ещё везёт, что для русских букв этот дополнительный байт только один и символ - 2 байтный. Например корейские иероглифы занимают 3 байта. Китайские - 4, и только иногда (самые редкие иероглифы) больше.
ЗЫ
То что русские буквы 2-байтные, не всегда верно. Есть ещё такие символы, как диакритические знаки, которые комбинируются с впереди идущим символов. Например, буква Ё может раскладываться как символ Е и горизонтальное верхнее двоеточие. Знаю, что это может быть использовано только для Ё и Й, но всё же...
Похожие вопросы
- Кодировка в программировании
- Как перевести данный код цикла из кодировки Mysqli в PDO?
- Почему выводит PHP именно так?
- Почему говорят про глобальный массив $GLOBALS в то же время данные передают через сессии?
- Почему заказчики на фриланс-биржах не говорят в описании задания что именно нужно сделать. Всё время пишут что-то...
- Почему PHP называют плохим ?
- Почему называть имена переменных на кириллице нельзя? Язык это позволяет.. Я вот спокойно делаю сайты на заказ и отдаю
- Почему сохраняется дефицит программистов?
- Почему боты обходят обработчик PHP
- Почему браузер отображает сам код php а не готовый ответ "5"?