Alterna · учебный материал

ASCII и Unicode

ASCII, Unicode, UTF-8, UTF-16, UTF-32 — история, таблицы, интерактивный конвертер кодировок. По ФГОС/ФОП для ОГЭ/ЕГЭ.

Что в этом материале

Содержание и основные понятия

← Вернуться к оглавлению
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-8
1–4
Да (1 байт = ASCII)
Веб, файлы, email
UTF-16
2 или 4
Нет
Windows API, Java, .NET
UTF-32
4
Нет
Внутренние структуры данных
Пример: слово «Привет» в разных кодировках
UTF-8
6 символов × 2 байта =
12 байт
UTF-16
6 символов × 2 байта =
12 байт
UTF-32
6 символов × 4 байта =
24 байта
🔄
Конвертер текста в коды
Введите текст и увидите его представление в ASCII/Unicode.
DEC:
HEX:
BIN:
Размер:
🌍
Кросс-кодировочный конвертер
Введите текст и выберите исходную кодировку. Увидите, как тот же текст выглядит во всех остальных кодировках.
Текст:
Кодировка исходного текста:
04
Калькулятор объёма текста
Вычислите объём текста в разных кодировках
🖩
Калькулятор объёма
Количество символов:
Кодировка:
05
Мини-тест
📝
Проверь себя: 5 вопросов
0 / 500 XP
0/5

Структурная карта учебников