← Все вопросы

Сколько байт занимает русская буква в UTF-8, а сколько английская?

Задан 8 месяцев назад1.4к просмотров2 ответа
5

Сохранил текстовый файл в UTF-8 и заметил, что русский текст весит больше английского при том же числе букв. Сколько реально байт занимает одна русская буква в UTF-8, а сколько английская? И от чего это зависит?

2 ответа

10
✓ Принятый ответ — помог автору

В UTF-8 размер символа переменный:

  • латинские буквы, цифры, базовые знаки (то, что было в ASCII) — 1 байт;
  • кириллица (русские буквы) — 2 байта каждая;
  • многие иероглифы — 3 байта; эмодзи — обычно 4 байта.

Поэтому слово cat (3 латинские буквы) = 3 байта, а кот (3 русские буквы) = 6 байт. Отсюда и разница в весе файла — английский текст в UTF-8 компактнее.

Если в задаче явно не сказано иное, для UTF-8 считай: латиница 1 байт, кириллица 2 байта.

4

Важная оговорка для задач: бывают и кодировки с фиксированным размером. Например, в Windows-1251 (КОИ-8) русская буква = 1 байт, а в UTF-16 — любой обычный символ = 2 байта. Так что число байт на символ зависит именно от кодировки, и в условии задачи её всегда указывают.

Ваш ответ

Войдите, чтобы ответить на вопрос.