← Вернуться к оглавлению
Alterna · глава 13 · страница 13.2

ASCII и Unicode

От 7-битного телеграфа до 1.1М+ символов Unicode: история, таблицы, конвертеры

ASCII (American Standard Code for Information Interchange) — первая стандартная кодировка символов. Unicode — её современный наследник, включающий все письменности мира.

ФГОСФОПОГЭ №2ЕГЭ №4
01

История кодировок текста

От телеграфа до Unicode: как развивалось кодирование символов

ФГОСОГЭ №2
Эволюция кодировок текста Бодо (1863) 5 бит, 32 ASCII (1963) 7 бит, 128 Ext.ASCII 8 бит, 256 Unicode 1.1M+ символов UTF-8 (1993) 1-4 байта Каждая следующая кодировка включает предыдущую

Кодировка Бодо (1863)

Первая электрическая телеграфная кодировка, разработанная Эmile-Бодо (Émile Baudot). 5 бит = 32 символа: 26 букв латинского алфавита + 6 знаков. Основана на фиксированной длине кода, в отличие от переменного кода Морзе. Скорость передачи измерялась в бодах (единицах в секунду). Именно Бодо заложил принцип: один символ = фиксированное количество бит.

ASCII (1963) — American Standard Code for Information Interchange
1963 · 7 бит · 128 символов

Создан Американским национальным институтом стандартов (ANSI). Заменил телеграфный код Морзе и стал первым массовым компьютерным стандартом.

  • 7 бит кодируют 128 символов: 32 управляющих (NUL, TAB, LF, CR…) + 96 печатных (A-Z, a-z, 0-9, знаки препинания)
  • Управляющие коды (0–31, 127): символы, которые не отображаются на экране, а управляют поведением устройства (перевод строки, звуковой сигнал, возврат каретки)
  • Позже расширен до 8 бит (Extended ASCII, 256 символов) — добавлены национальные алфавиты: кириллица, греческий, арабский и др.
  • Стал де- facto стандартом для всех компьютеров мира: любое устройство «понимает» ASCII
  • Любопытно: цифры 0–9 имеют коды 48–57, заглавные A–Z: 65–90, строчные a–z: 97–122
KOI-8 (1987) — Код Обмена Информацией, 8 бит
1987 · 8 бит · 256 символов

Создан в СССР для кириллицы в сетях Электроника-60 и USENET ( Usenet-конференции). Название — «Код Обмена Информацией — 8 бит».

  • Русские буквы расположены по принципу «код + 80»: если взять код буквы А в ASCII и прибавить 128 (0x80), получится её KOI-8 код. Например: A = 0x41, А = 0xC1
  • Этот трюк позволял программам автоматически переключаться между латиницей и кириллицей
  • Был основной кодировкой в Unix/Linux (до массового перехода на UTF-8)
  • До сих пор используется в некоторых Linux-системах и сетевых протоколах
  • Особенность: строчные русские буквы стоят после заглавных (наоборот CP1251)
Windows-1251 / CP1251 (1990)
1990 · 8 бит · 256 символов

Разработан Microsoft для Windows 3.1. Кириллица занимает позиции 128–255.

  • Удобен тем, что пробел = 0x20, цифры = 0x30–0x39, как в ASCII — совместимость сохранена
  • Русские буквы идут подряд в алфавитном порядке (А=0xC0, Б=0xC1…), в отличие от KOI-8
  • Стал стандартом для Windows-систем и до сих пор встречается в старых файлах, email, базах данных
  • Не淘汰: многие старые русскоязычные веб-сайты до сих пор используют CP1251
UTF-8 (1993) — Формат Фробен, RFC 2279
1993 · 1–4 байта · совместим с ASCII

Создан Кеном Томпсоном и Робом Пайком (Unix, Bell Labs). Название: Unicode Transformation Format — 8-bit.

  • Обратно совместим с ASCII: любой символ ASCII (0–127) кодируется ровно 1 байтом — тем же значением
  • Латиница = 1 байт, кириллица = 2 байта, CJK (китайский) = 3 байта, эмодзи = 4 байта
  • Сейчас используется в 98% веба — самый экономичный для смешанного текста
  • Не требует BOM (Byte Order Mark) — порядок байтов фиксирован (little-endian)
  • Префиксные коды: 0xxxxxxx — 1 байт, 110xxxxx 10xxxxxx — 2 байта, 1110xxxx 10xxxxxx 10xxxxxx — 3 байта, 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx — 4 байта
UTF-16 (1991)
1991 · 2 или 4 байта

Одна из форм Unicode с переменной длиной: 2 байта для базового диапазона (BMP), 4 байта для supplementary planes.

  • Два варианта: BE (Big Endian) и LE (Little Endian) — разный порядок байтов
  • BOM (Byte Order Mark) = FE FF для BE, FF FE для LE — метка в начале файла
  • Используется в Windows API, Java, .NET как внутреннее представление строк
  • Не обратно совместим с ASCII: ASCII-символ «A» (0x41) в UTF-16 LE = 41 00
UTF-32 (2003)
2003 · 4 байта фиксировано

Самая простая форма Unicode: каждый символ = ровно 4 байта.

  • Фиксированная длина: удобно для индексации — доступ к N-му символу за O(1)
  • Самый прожорливый: «A» = 00 00 00 41 (4 байта вместо 1 в UTF-8)
  • Редко используется в файлах, но применяется во внутренних структурах данных
  • Не требует BOM — порядок байтов определяется платформой
02

Таблица символов

Базовая ASCII-таблица (0–127) и расширенная (128–255). UTF-8 кодирует ASCII символы теми же байтами.

ФГОСОГЭ №2
📋
Интерактивная таблица символов
ASCII (0–127) Extended (128–255) Все (0–255)
Нажмите на ячейку, чтобы увидеть подробности
03

Unicode: UTF-8, UTF-16, UTF-32

Три формы представления Unicode и их особенности

ФГОСЕГЭ №4

Сравнение UTF-кодировок

КодировкаБайт/символASCII-совместимостьПрименение
UTF-81–4Да (1 байт = ASCII)Веб, файлы, email
UTF-162 или 4НетWindows API, Java, .NET
UTF-324НетВнутренние структуры данных

Пример: слово «Привет» в разных кодировках

UTF-8

6 символов × 2 байта = 12 байт

UTF-16

6 символов × 2 байта = 12 байт

UTF-32

6 символов × 4 байта = 24 байта

🔄
Конвертер текста в коды

Введите текст и увидите его представление в ASCII/Unicode.

DEC:
HEX:
BIN:
Размер:
🌍
Кросс-кодировочный конвертер

Введите текст и выберите исходную кодировку. Увидите, как тот же текст выглядит во всех остальных кодировках.

04

Калькулятор объёма текста

Вычислите объём текста в разных кодировках

🖩
Калькулятор объёма
05

Мини-тест

📝
Проверь себя: 5 вопросов