ИНФОРМАТИКА · 10 КЛАСС
Данные и кодирование · Интерактивный конспект

§ 13. Кодирование текстовых данных

Разделим символ, его код и байты файла. Посмотрим, почему один и тот же текст занимает разный объём в разных кодировках.

Попробовать на модели ↓
Разбираемся в теме

Основные пункты параграфа

1

Кодовая таблица и шрифт

Кодирование связывает символы с числами, а шрифт определяет их изображение.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Кодовая таблица и шрифт

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Текст хранится как последовательность кодовых значений, а не как маленькие картинки букв. Шрифт задаёт форму отображения. Замена шрифта может изменить вид буквы, не меняя её код. Латинская A и кириллическая А похожи, но являются разными символами.

При чтении файла необходимо знать кодировку. Одни и те же байты при разных правилах декодирования могут превратиться в разные символы или вызвать ошибку. Кодирование представляет данные, шифрование предназначено для ограничения доступа к содержимому; это разные задачи.

Главная мысль: Кодирование связывает символы с числами, а шрифт определяет их изображение.
2

ASCII и однобайтовые таблицы

Стандарт ASCII содержит 128 семибитных кодов; расширенные восьмибитные таблицы не равны ему.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

ASCII и однобайтовые таблицы

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

ASCII включает латинские буквы, цифры, знаки и управляющие коды. Его диапазон 0–127. Кириллицы в стандартном ASCII нет. Восьмибитные кодовые страницы могут задавать до 256 значений, но распределяют дополнительные символы по-разному. Поэтому выражение «ASCII — это любые 256 символов» неточно.

Например, латинская A имеет десятичный код 65. В байтовом представлении это 01000001. Для символа, отсутствующего в выбранной таблице, корректный результат — сообщить о невозможности представления, а не незаметно выдать другой знак. Тренажёр явно показывает такое ограничение для русского текста в ASCII.

Главная мысль: Стандарт ASCII содержит 128 семибитных кодов; расширенные восьмибитные таблицы не равны ему.
3

Unicode и формы UTF

Unicode задаёт кодовые точки, а UTF-8 и UTF-16 по-разному представляют их в кодовых единицах и байтах.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Unicode и формы UTF

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

UTF-8 использует от 1 до 4 байт на кодовую точку: A занимает 1 байт, Ж — 2, 😀 — 4. UTF-16 использует одну или две 16-битные единицы: эти примеры занимают соответственно 2, 2 и 4 байта. Поэтому ни Unicode, ни UTF-16 нельзя описывать правилом «любой символ всегда два байта».

В тренажёре UTF-16 показан с порядком байтов от младшего к старшему (LE), без метки BOM. Видимый знак может состоять из нескольких кодовых точек, например буквы и комбинируемого ударения. Счёт кодовых точек и счёт видимых знаков не всегда совпадают.

Главная мысль: Unicode задаёт кодовые точки, а UTF-8 и UTF-16 по-разному представляют их в кодовых единицах и байтах.
4

Объём текста и проверка

При фиксированной длине кода V=K·i; при переменной длине складывают фактические размеры кодов.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Объём текста и проверка

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Если условие задаёт K символов по i бит каждый, объём равен K*i бит. Пробелы и знаки препинания тоже входят в текст. Для перевода в байты делят число бит на 8; если требуется целое число выделенных байтов, округляют вверх после оговорённой упаковки.

Для UTF-8 нельзя умножать любой текст на одно универсальное число байтов. Строка AЖ😀 имеет три кодовые точки, семь байтов UTF-8 и восемь байтов UTF-16 без BOM. Размер реального файла может включать служебные данные и переводы строк. При школьной модели с двумя байтами на знак нужно явно принять это условие, а не переносить его на все тексты Unicode.

ТекстКодовых точекUTF-8, байтUTF-16, байт без BOM
A112
Ж122
😀144
AЖ😀378
Главная мысль: При фиксированной длине кода V=K·i; при переменной длине складывают фактические размеры кодов.
Интерактивная практика

Исследуйте и примените

Проверьте модель на нескольких наборах данных, затем выполните самостоятельное задание.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Лаборатория: проверьте свой вариант

Меняйте данные и выполняйте шаги. Цвет выделяет текущие элементы; подписи объясняют результат. Сброс возвращает исходный опыт.

Соберём главное

Шесть выводов

01

Кодирование связывает символы с числами, а шрифт определяет их изображение.

02

Стандарт ASCII содержит 128 семибитных кодов; расширенные восьмибитные таблицы не равны ему.

03

Unicode задаёт кодовые точки, а UTF-8 и UTF-16 по-разному представляют их в кодовых единицах и байтах.

04

При фиксированной длине кода V=K·i; при переменной длине складывают фактические размеры кодов.

05

Шрифт влияет на вид, а кодировка — на представление текста в байтах.

06

Служебные данные и условия округления учитывают отдельно.

Самопроверка

Тест: 10 вопросов

Один верный ответ. За ответ — 0,5 балла. Откройте и проверьте себя.

1. Сколько кодов в стандартном ASCII?

2. Есть ли русские буквы в стандартном ASCII?

3. Каков код латинской A в ASCII?

4. Что меняет шрифт прежде всего?

5. Сколько байтов у A в UTF-8?

6. Сколько байтов у Ж в UTF-8?

7. Сколько байтов у 😀 в UTF-16 без BOM?

8. Любой видимый знак равен одной кодовой точке?

9. Сколько байтов у AЖ😀 в UTF-8?

10. Что необходимо знать для подсчёта объёма текста?

ВыводыТестВ началоВсе параграфы
↑

Загрузка прогресса…