Кодировка символов и её виды¶
Кодировка — это система правил сопоставления символов (букв, цифр, знаков препинания, управляющих команд) с числовыми кодами, которые могут быть сохранены и обработаны в цифровых устройствах. В информатике под кодировкой понимают также конкретную таблицу соответствия между символами и их двоичными представлениями. Без кодировок невозможно хранение и передача текста в компьютерах, поскольку вычислительные устройства оперируют исключительно числами.
¶Назначение и принцип работы
Компьютер хранит и обрабатывает данные в двоичном виде — последовательностями битов (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, материалы по истории вычислительной техники, учебники по информатике.