"Информатика (изд. "БИНОМ. Лаборатория знаний")", Угринович Н.Д.
Кодирование текстовой информации — это представление каждого символа текста числовым кодом, который компьютер хранит в двоичном виде. Кодовая таблица связывает буквы, цифры, пробелы и знаки с конкретными числами. В работе нужно научиться находить коды символов, переводить их в двоичную систему, расшифровывать последовательности и вычислять размер текста. Также важно различать ASCII, Windows-1251 и Unicode, потому что одинаковые символы в разных кодировках могут иметь разные коды.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Кодирование текстовой информации — представление символов текста в виде числовых кодов, записываемых в двоичной форме. Для компьютера буква, цифра или пробел становятся набором битов. Это нужно, чтобы хранить и обрабатывать текст с помощью электронных устройств.
Кодовая таблица — соответствие между символами текста и их числовыми кодами. Например, таблица показывает, какое число соответствует букве A или знаку вопроса. По ней текст можно закодировать и затем восстановить.
ASCII — стандарт кодирования латинских букв, цифр, знаков препинания и управляющих символов. В нём 128 основных кодов, поэтому русских букв в исходной таблице нет. ASCII удобен для простых текстов и совместим с большим числом старых программ.
Unicode — универсальный стандарт кодирования символов разных языков и письменностей. Он позволяет использовать в одном тексте русские, английские, китайские символы, математические знаки и эмодзи. Конкретный размер хранения зависит от выбранного способа записи Unicode, например UTF-8.
Компьютер не хранит буквы непосредственно, потому что его память работает с битами — значениями 0 и 1. Электронным схемам легко различать два состояния, а не множество отдельных букв. Поэтому каждому символу заранее назначают число, а это число записывают последовательностью битов.
Кодовая таблица связывает символ и его код по тому же принципу, что словарь связывает слово и его значение. При вводе компьютер находит в таблице нужный символ и сохраняет соответствующее число. При чтении выполняется обратное действие: программа берёт число и ищет символ с таким кодом.
Числовой код сначала обычно записан в десятичной системе, например 65. Чтобы получить его двоичный вид, число переводят в систему счисления с основанием 2: 65 = 1000001₂. При хранении код часто дополняют ведущими нулями до полного байта, поэтому 65 можно записать как 01000001.
Разные кодировки назначают символам разные номера, потому что используют разные таблицы и правила распределения кодов. Например, русская буква в Windows-1251 и та же буква в Unicode могут быть представлены неодинаковыми числами. Если открыть файл по другой таблице, программа прочитает правильные числа, но покажет не те символы.
Число битов на символ определяет, сколько разных комбинаций возможно: n бит дают 2ⁿ кодов. Один байт содержит 8 бит и позволяет получить 256 комбинаций. Чем больше памяти отводится символу, тем больше знаков можно кодировать, но тем больше может стать размер файла; в переменных кодировках размер зависит ещё и от самого символа.
| Характеристика | ASCII | Windows-1251 | Unicode |
|---|---|---|---|
| Количество возможных кодов | 128 | 256 | Более 1 000 000 кодовых позиций |
| Какие символы кодируются | Латиница, цифры, знаки и управляющие символы | Латиница, кириллица, цифры и знаки | Символы разных языков, письменностей и специальные знаки |
| Количество битов на символ | 7 бит, обычно 1 байт | 8 бит, 1 байт | Зависит от UTF: обычно от 8 до 32 бит |
| Поддержка русского языка | Нет в исходной таблице | Да | Да |
| Совместимость с другими языками | Ограниченная | Ограниченная для языков с другими алфавитами | Высокая |
| Пример применения | Старые программы и сетевые протоколы | Старые русскоязычные программы Windows | Современные сайты, приложения и базы данных |
Сначала определите, какие символы поддерживает кодировка, затем сравните размер одного символа. Для точного расчёта в случае Unicode нужно знать конкретный формат, например UTF-8 или UTF-16. Таблица помогает понять, почему один и тот же текст может занимать разный объём.
Условие: по таблице ASCII определить числовой и двоичный коды символов A, b и 7. Нужно не угадывать двоичную запись, а сначала найти десятичный код каждого знака. Затем каждый код переводится в систему счисления с основанием 2.
Ответ: A — 65 и 01000001₂, b — 98 и 01100010₂, 7 — 55 и 00110111₂. Ведущие нули не меняют значение числа, но показывают полный размер байта.
Условие: расшифровать последовательность ASCII-кодов 72, 105, 33. Каждый код обозначает один символ, поэтому порядок чисел менять нельзя.
Ответ: Hi! Проверка проста: количество полученных символов должно совпадать с количеством числовых кодов, а для русского текста нужно было бы использовать таблицу, которая поддерживает кириллицу.
Условие: сравнить размер сообщения из 100 русских символов в Windows-1251 и UTF-8. Считаем только символы сообщения, а каждый русский символ в UTF-8 занимает 2 байта.
Ответ: в Windows-1251 сообщение занимает 100 байт, а в UTF-8 — 200 байт. Если в тексте есть латинские символы, пробелы или знаки, расчёт нужно выполнять с учётом размера каждого конкретного символа.
Путают числовой код с двоичной записью. Десятичное число 65 и последовательность 1000001₂ — это разные формы записи одного кода. Проверьте себя переводом обратно в десятичную систему или сложением разрядов.
Используют не ту кодовую таблицу. Ошибку допускают, потому что символ выглядит одинаково, а его номер в разных кодировках может отличаться. Перед расшифровкой подпишите название кодировки и сверяйте каждый код именно с её таблицей.
Не считают пробелы и знаки. Кажется, что смысл несут только буквы, но компьютер хранит каждый пробел, знак препинания и перевод строки. Для проверки пересчитайте все позиции сообщения, включая невидимые символы.
Считают объём только по числу букв. Один и тот же текст занимает разный объём при разном размере кода символа. Умножайте общее число символов на байты одного символа, а для переменной кодировки учитывайте тип каждого знака.
До изучения кодирования нужны двоичная система счисления, единицы измерения информации и представление данных в памяти компьютера. Эти знания объясняют, как число превращается в последовательность битов и байтов.
Тема помогает понять устройство текстовых файлов и появление нечитаемых символов при несовместимости кодировок. Ошибка возникает не обязательно из-за повреждения файла: иногда программа просто использует другую кодовую таблицу.
Знания применяются в текстовых редакторах, веб-страницах, базах данных и программировании. Выбор кодировки влияет на отображение текста, передачу данных и объём хранения.
Почему компьютер не может хранить буквы непосредственно?
Компьютер работает с электрическими сигналами, которые удобно представить двумя состояниями: 0 и 1. Поэтому буквы заменяются числами, а числа записываются последовательностями нулей и единиц.
Чем отличаются ASCII, Windows-1251 и Unicode?
ASCII кодирует главным образом латинские символы, цифры и знаки. Windows-1251 добавляет русские буквы, а Unicode предназначен для символов большинства языков мира и использует разные способы хранения.
Почему вместо русского текста иногда отображаются непонятные символы?
Так происходит, когда текст был записан в одной кодировке, а программа прочитала его по таблице другой кодировки. Числа остаются прежними, но им сопоставляются другие символы.
Как определить объём текстового сообщения в памяти компьютера?
Нужно умножить количество символов на число байтов, отводимое под один символ в выбранной кодировке. Следует учитывать не только буквы, но также пробелы, знаки препинания и переводы строк.
Всегда ли один символ занимает один байт?
Нет. В одних кодировках символ может занимать один байт, а в Unicode, например UTF-8, разные символы занимают от одного до четырёх байтов.
Практическая работа 2.1 Кодирование текстовой информации