База знаний для подготовки к ОГЭ и ЕГЭ, проверенная Российской академией наук

Восьмибитные кодировки

UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — стандарт кодирования символов, использующий переменное количество байт для кодирования символов Юникод. UTF-8 сочетает в себе эффективность, гибкость и обратную совместимость с кодировкой ASCII.

Основные понятия

  • Юникод — универсальный стандарт кодирования, охватывающий большинство письменных систем мира.
  • Кодовая позиция — уникальный номер символа в стандарте Юникода.
  • Октет — 8-битный байт, минимальная единица данных в кодировке UTF-8.
  • ASCII — 7-битная кодировка, включающая основные латинские буквы, цифры и символы.

Алгоритм кодирования UTF-8

UTF-8 кодирует символы Юникода, используя от 1 до 4 байт:

  • Символы в диапазоне кодируются одним байтом, совпадая с кодами ASCII.
  • Диапазон используется для символов, кодируемых двумя байтами.
  • Символы в диапазоне кодируются тремя байтами.
  • Диапазон охватывает символы, кодируемые четырьмя байтами.

Структура байтов

Байты формируются по определённым шаблонам:

  • 1 байт:
  • 2 байта:
  • 3 байта:
  • 4 байта:

Где «» — биты, содержащие кодовую позицию символа.

Примеры кодирования

  • Символ «A» ():
 * Кодовая позиция в двоичном виде: 
 * UTF-8 кодировка:  (1 байт)
  • Символ «€» ():
 * Кодовая позиция в двоичном виде: 
 * UTF-8 кодировка:  (3 байта)

Маркер последовательности байтов (BOM)

Маркер BOM в UTF-8 представляется последовательностью байт EF BB BF. Он может использоваться в начале файла для указания кодировки, но не обязателен и зачастую опускается.

Применения

UTF-8 широко применяется в веб-технологиях, являясь доминирующей кодировкой в интернете. Преимущества UTF-8:

  • Совместимость с ASCII: символы ASCII сохраняют свои коды.
  • Эффективность: тексты на латинице занимают меньше места.
  • Универсальность: поддерживает все символы Юникода без необходимости смены кодировки.

Заключение

UTF-8 — гибкий и эффективный стандарт кодирования, обеспечивающий поддержку множества языков и символов. Его совместимость с ASCII и способность кодировать любые символы Юникода сделали его стандартом де-факто для хранения и передачи текстовой информации в современном мире.

Литература