Что такое кодировка текста?

Кодировка текста (или кодировка символов) — это конкретная таблица соответствия, которая устанавливает правило: какому числовому коду (обычно в виде одного или нескольких байтов) соответствует каждый печатный символ. Компьютер не понимает буквы «А», «Б» или «@» — он оперирует только числами. Кодировка выступает в роли переводчика: она говорит системе, что числовой код 224 в одной кодировке — это буква «а», а в другой — может быть совершенно иной символ.

Проще говоря, кодировка текста — это словарь для перевода между человеческими символами и машинными числами.

Как работает кодировка текста: от символа к байту

Процесс кодирования текста можно представить в несколько шагов:

  1. Ввод символа. Вы нажимаете клавишу на клавиатуре, например, русскую «Я».
  2. Поиск кода. Операционная система или программа, используя активную кодировку (например, Windows-1251), находит в её таблице числовой код для этой буквы. Для «Я» в Windows-1251 это код 223.
  3. Сохранение в байтах. Число 223 преобразуется в двоичный вид (11011111) и сохраняется в файле или передаётся по сети как один байт данных.
  4. Декодирование. При открытии файла другая программа считывает этот байт (11011111) и, используя ТУ ЖЕ САМУЮ кодировку, находит в таблице, что код 223 соответствует букве «Я», и отображает её на экране.

Если на этапе декодирования программа использует другую кодировку (например, считает байт в кодировке KOI8-R), то код 223 будет интерпретирован как совершенно другой символ, и вы увидите «я» или бессмысленный знак.

Характеристики кодировок текста

  • Набор символов (репертуар): Какие именно символы могут быть закодированы — только латиница, кириллица, иероглифы, специальные знаки.
  • Длина кода: Фиксированная (все символы кодируются одним байтом, как в ASCII) или переменная (символы кодируются одним, двумя или более байтами, как в UTF-8).
  • Совместимость: Некоторые кодировки являются надмножествами других. Например, первые 128 символов UTF-8 идентичны ASCII, что обеспечивает обратную совместимость.

Основные виды кодировок текста

Исторически сложилось несколько семейств кодировок, решавших проблему отображения текста в разных языковых средах.

1. Однобайтовые кодировки

Каждый символ кодируется одним байтом (8 бит), что позволяет представить максимум 256 уникальных символов.

  • ASCII (American Standard Code for Information Interchange): Базовая 7-битная кодировка (128 символов), включающая латиницу, цифры, знаки препинания и управляющие символы. Фундамент для многих других кодировок.
  • Windows-1251 (CP1251): Расширенная 8-битная кодировка, разработанная Microsoft для кириллических алфавитов. Долгое время была стандартом для русскоязычных Windows-программ и веб-сайтов.
  • KOI8-R: Старая 8-битная кодировка для русского языка, широко использовавшаяся в UNIX-системах и раннем Рунете.

Главный недостаток однобайтовых кодировок — невозможность одновременно отображать символы разных письменностей (например, русские и арабские буквы в одном тексте).

2. Многобайтовые и Юникод (Unicode)

Решение проблемы множества языков — создание единой универсальной таблицы символов.

  • Unicode (Юникод): Это не конкретная кодировка, а единый стандарт, который присваивает уникальный номер (кодовую точку) каждому символу всех современных и многих исторических письменностей мира. Например, русской букве «А» в Юникоде присвоен номер U+0410.
  • UTF-8 (Unicode Transformation Format, 8-bit): Самая распространённая кодировка для реализации стандарта Юникод. Её ключевая особенность — переменная длина: символы ASCII кодируются одним байтом, кириллица — двумя, а более редкие символы — тремя или четырьмя. Это делает UTF-8 обратно совместимым с ASCII и экономичным для хранения.
  • UTF-16, UTF-32: Другие формы кодирования Юникода, где символы представлены фиксированным количеством байтов (2 или 4).

Почему «кракозябры»? Практическое значение кодировок

Проблемы с отображением текста (так называемые «кракозябры» вроде «РџСЂРёРІРµС‚» вместо «Привет») возникают именно из-за несовпадения кодировок при сохранении и открытии файла или отображении веб-страницы.

Практическое значение понимания кодировок текста:

  • Корректное отображение сайтов: Веб-страницы должны явно указывать свою кодировку (обычно UTF-8) в мета-теге <meta charset="UTF-8">, чтобы браузер правильно её интерпретировал.
  • Работа с текстовыми файлами: При открытии старого файла в современном редакторе нужно правильно угадать или указать исходную кодировку (Windows-1251, KOI8-R).
  • Перенос данных: При экспорте/импорте данных между разными программами и системами согласование кодировки — критически важный шаг.
  • Программирование: Разработчикам необходимо явно указывать кодировку при чтении/записи файлов и обработке строк, чтобы избежать ошибок.

Отличия от смежных понятий

  • Кодировка текста vs. Шрифт: Кодировка определяет, КАКОЙ символ закодирован числом. Шрифт определяет, КАК этот символ будет нарисован на экране (графическое представление).
  • Кодировка текста vs. Формат файла: Формат файла (например, .txt, .docx) определяет общую структуру данных. Кодировка — это конкретное правило интерпретации текстовой части этих данных.

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

Источники