Открыть сервис

Кодировка символов и её виды

Кодировка — это система правил сопоставления символов (букв, цифр, знаков препинания, управляющих команд) с числовыми кодами, которые могут быть сохранены и обработаны в цифровых устройствах. В информатике под кодировкой понимают также конкретную таблицу соответствия между символами и их двоичными представлениями. Без кодировок невозможно хранение и передача текста в компьютерах, поскольку вычислительные устройства оперируют исключительно числами.

Назначение и принцип работы

Компьютер хранит и обрабатывает данные в двоичном виде — последовательностями битов (0 и 1). Чтобы представить текст, каждому символу присваивается уникальное число, которое затем переводится в двоичный код. Совокупность таких соответствий и образует кодировку. При считывании данных программа выполняет обратное преобразование: по числовому коду находит символ в таблице.

Ключевые понятия:

  • Кодовая позиция — числовой индекс символа в таблице кодировки.
  • Кодовая страница — конкретный набор символов, закреплённый за определённым диапазоном кодов.
  • Бит и байт — минимальные единицы хранения; в большинстве классических кодировок один символ занимал ровно один байт (8 бит), что позволяло закодировать 256 символов.

История развития

Первые системы кодирования текста появились вместе с телеграфом. В 1830-х годах Сэмюэл Морзе разработал код, где буквы передавались комбинациями коротких и длинных сигналов. В 1870-х годах Эмиль Бодо создал пятибитный код для телеграфных аппаратов, ставший основой международного телеграфного кода ITA2.

С появлением ЭВМ в 1950–1960-х годах возникли машинные кодировки. В 1963 году был принят стандарт ASCII (American Standard Code for Information Interchange), использующий 7 бит и охватывающий 128 символов: латинские буквы, цифры, знаки препинания и управляющие коды. ASCII стал фундаментом для большинства последующих систем.

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

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

Расширения ASCII использовали восьмой бит для добавления национальных символов. Для русского языка наибольшее распространение получили:

КодировкаОсобенности
КОИ-8Разработана в СССР, применялась в UNIX-системах
CP866Использовалась в MS-DOS
Windows-1251Стандарт для русскоязычной версии Windows
ISO 8859-5Международный стандарт для кириллицы

Главный недостаток однобайтовых кодировок — невозможность одновременного представления символов разных языков и ограничение в 256 знаков.

Юникод

Юникод (Unicode) — универсальный стандарт, присваивающий уникальный код каждому символу всех письменных систем мира. Разработан в 1991 году консорциумом Unicode. Содержит более 149 000 символов. Существует несколько форм кодирования:

  • UTF-8 — переменная длина от 1 до 4 байт, совместима с ASCII, доминирует в интернете.
  • UTF-16 — 2 или 4 байта на символ.
  • UTF-32 — фиксированные 4 байта.

Проблема несовпадения кодировок

Если текст, сохранённый в одной кодировке, открыть в программе, ожидающей другую, возникает искажение — «кракозябры». Например, русский текст в Windows-1251, прочитанный как CP866, превращается в бессмысленный набор символов. Эта проблема была массовой в 1990-х и начале 2000-х годов при обмене файлами и электронной почтой. Переход на UTF-8 в 2010-х годах в значительной степени устранил её.

Применение

Кодировки используются повсеместно:

  • в текстовых редакторах и операционных системах;
  • в веб-страницах (метатег charset);
  • в базах данных;
  • в протоколах передачи данных;
  • в шифровании и сжатии информации.

Отдельно выделяют кодирование в узком смысле — преобразование информации для защиты или сжатия: коды Хаффмана, коды Рида — Соломона, кодирование с исправлением ошибок.

Смежные понятия

Термин «кодировка» иногда применяют шире — к любым системам условных обозначений: штрихкоды, QR-коды, азбука Морзе, шифры. В криптографии различают кодирование (обратимое преобразование без секретного ключа) и шифрование (с ключом).

Источники: стандарт Unicode, документация ASCII, материалы по истории вычислительной техники, учебники по информатике.