"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Текст — это упорядоченная последовательность символов, с помощью которой записывают и передают информацию. Для компьютера буквы, цифры и знаки не отличаются от других данных: каждому символу назначается числовой код, а набор соответствий хранится в кодовой таблице. Количество возможных кодов зависит от числа двоичных разрядов. Чтобы текст правильно отображался на разных устройствах, программа должна знать, по какой кодировке читать его коды.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Текст — последовательность символов, с помощью которой записывают и передают информацию. Значение имеет не только набор знаков, но и их порядок: перестановка букв может изменить слово, а перестановка слов — смысл сообщения. Поэтому текст воспринимается как связное упорядоченное сообщение, а не как случайный набор отметок. Это определение помогает понять, какие данные компьютер должен сохранить без изменения порядка.
Символ — отдельный элемент текстового сообщения: буква, цифра, знак препинания, пробел или специальный знак. Например, в записи «9 класс» есть цифра, пробел и буквы. Пробел тоже считается символом, потому что он разделяет части текста и влияет на его чтение. Понятие нужно, чтобы считать элементы сообщения и определять, как их представить в компьютере.
Кодирование текста — представление символов с помощью кодов, которые компьютер может хранить и обрабатывать. Код — это условное числовое обозначение символа; внутри компьютера число записывается двоичными разрядами, то есть нулями и единицами. Благодаря кодированию текст можно сохранять в файле, передавать по сети и обрабатывать программами. При этом компьютер работает с кодами, а не распознаёт буквы так, как это делает человек.
Кодовая таблица — установленное соответствие между символами и их кодами. Она нужна программе, чтобы по коду определить, какой знак показать на экране, а при сохранении — какой код назначить введённому символу. Одно и то же числовое значение может обозначать разные знаки в разных таблицах. Поэтому отправитель и программа, которая читает файл, должны одинаково интерпретировать коды.
Сначала человек составляет сообщение из символов: букв, пробелов, цифр и знаков. Затем текстовый редактор представляет каждый символ кодом, а коды записываются в виде данных, доступных компьютеру. В результате порядок знаков сохраняется, но внутри файла текст представлен не изображениями букв, а последовательностью чисел. Такое представление позволяет устройству копировать, искать и изменять текст с помощью программ.
Символам назначают коды потому, что компьютер хранит данные в цифровой форме и должен различать знаки по однозначным правилам. Таблица кодов служит общим словарём: по ней программа переводит введённую букву в число и число — обратно в букву. Совокупность таких соответствий образует кодовую таблицу. Если разные программы используют разные правила, одно и то же число может быть показано разными символами, поэтому согласованность таблицы необходима для чтения.
Число доступных комбинаций определяется количеством двоичных разрядов. У каждого разряда есть два варианта — 0 или 1, поэтому для n разрядов получается 2ⁿ сочетаний: например, при 2 разрядах это 00, 01, 10 и 11. Следовательно, 8 разрядов дают 2⁸ = 256 возможных кодов. Это число показывает вместимость набора кодов, а не количество символов в конкретном сообщении; таблица может использовать лишь часть доступных сочетаний.
В однобайтовом кодировании для кода отводится один байт, то есть 8 двоичных разрядов. Поэтому всего доступно 256 комбинаций, и набор символов ограничен: в таблице приходится выбирать, какие буквы и знаки включить. Unicode предназначен для представления символов разных языков и письменностей, чтобы не требовались отдельные несовместимые наборы для каждой группы знаков. При этом Unicode — не обещание, что каждый символ занимает один байт: размер зависит от конкретного формата кодирования.
Если файл создан в одной кодировке, а программа читает его по другой, она связывает сохранённые числа не с теми символами. Поэтому на экране могут появиться непонятные знаки вместо букв, хотя исходные данные нередко сохранились. Причина не в том, что буквы превратились в случайные символы, а в несовпадении правил чтения. Чтобы исправить отображение, нужно выбрать кодировку, в которой текст был создан или сохранён.
| Характеристика | Однобайтовое кодирование | Unicode |
|---|---|---|
| Принцип представления символа | Символу соответствует код длиной в один байт. | Символу соответствует код Unicode, представленный в выбранном формате кодирования. |
| Размер кода | Один байт, то есть 8 разрядов. | Зависит от формата кодирования; возможны разные размеры. |
| Количество и состав представимых символов | До 256 кодов; набор знаков ограничен таблицей. | Большой набор символов разных языков и письменностей. |
| Использование для разных языков | Для разных языков могут требоваться разные таблицы. | Предназначен для представления символов многих языков в общем стандарте. |
| Что происходит при несовпадении кодировок | Коды могут показываться как другие знаки. | При неверном выборе формата или кодировки символы также могут отображаться неправильно. |
Сравнивайте строки по одной характеристике: размеру кода, набору знаков и правилам чтения. Таблица помогает увидеть главное различие: однобайтовая схема ограничена числом кодов, а Unicode охватывает гораздо больше символов. При этом для оценки размера файла нужно знать конкретный способ кодирования, а не только название набора символов.
Задача 1. Сколько различных кодов можно составить из 8 двоичных разрядов? Нужно выяснить число всех комбинаций, а не перечислять символы, которым их можно назначить. Каждый разряд может принимать одно из двух значений: 0 или 1. Поэтому для восьми разрядов применяем правило 2ⁿ, где n — число разрядов.
Ответ: можно составить 256 различных кодов. Они могут обозначать символы по выбранной кодовой таблице, но сама формула не сообщает, какие именно знаки там записаны. Она показывает только количество возможных комбинаций из восьми двоичных разрядов.
Задача 2. Текст содержит 120 символов. Сколько байтов потребуется для хранения, если каждый символ кодируется одним байтом? Здесь уже задан размер кода каждого символа, поэтому сначала связываем число символов с объёмом одного кода. Каждый символ занимает один байт, а повторные символы тоже учитываются: важно количество знаков в сообщении, а не количество разных букв. Дополнительные сведения о форматировании или служебных данных в условии не указаны, поэтому их не прибавляем.
Ответ: для хранения символов потребуется 120 байтов. Расчёт верен именно при условии, что каждый знак занимает один байт и не учитываются дополнительные данные файла. В другой кодировке ответ может отличаться, если символы хранятся кодами иной длины.
Задача 3. Файл с русским текстом открыли в программе с другой кодировкой, и знаки отображаются неверно. Почему это произошло и как исправить? В файле записаны числовые коды символов, а программа должна сопоставить их с буквами по таблице. Если программа выбрала не ту таблицу, числа прочитаны верно как данные, но истолкованы по другим правилам. Поэтому для исправления сначала следует проверить способ кодирования, с которым файл был сохранён.
Ответ: нужно открыть файл с исходной кодировкой. Неверный вид текста сам по себе не доказывает, что данные потеряны: часто меняется только их интерпретация. Если файл уже был пересохранён с неправильными знаками, простого выбора кодировки может быть недостаточно, поэтому сначала полезно сохранить исходную копию.
Ошибка: считать, что один символ всегда занимает один байт. Так думают, потому что в простых примерах часто задают однобайтовое кодирование. На деле размер зависит от кодировки и способа представления символа; некоторые символы занимают больше места. Проверьте условие задачи или формат файла: если размер кода не задан как один байт, нельзя автоматически умножать число символов на один.
Ошибка: путать количество кодов с длиной текста. Число 2ⁿ показывает, сколько комбинаций можно составить из n двоичных разрядов, а не сколько символов записано в сообщении. Путаница возникает из-за того, что и число кодов, и число символов выражаются числами. Для проверки отдельно запишите длину сообщения и число возможных комбинаций кода.
Ошибка: полагать, что код сам по себе однозначно определяет вид символа. Число приобретает смысл только в рамках конкретной кодовой таблицы, а разные таблицы могут назначать одинаковому коду разные знаки. Это легко упустить, если считать код универсальным обозначением буквы. Проверьте, указана ли кодировка и совпадает ли она у создателя файла и программы чтения.
Ошибка: считать неверные знаки доказательством потери данных. Обычно так рассуждают, потому что на экране текст выглядит испорченным. Но часто программа просто читает сохранённые коды по другой таблице, и исходные данные остаются на месте. Попробуйте выбрать исходную кодировку и открыть копию файла; если знаки восстановились, причина была в интерпретации.
Чтобы понять кодирование текста, нужно знать двоичное представление информации и уметь переводить числа из двоичной системы счисления. Связь с измерением объёма информации помогает оценить размер текстового файла: он зависит от количества символов и числа байтов, нужных для их кодов. Знание кодировок пригодится при сохранении и обмене файлами, работе в текстовых редакторах и обработке текста программами. Эти правила позволяют отличить ошибку отображения от проблемы с самими данными.
Почему компьютер хранит текст в виде чисел?
Компьютер хранит и обрабатывает данные в двоичном виде, поэтому каждому символу назначают числовой код. По кодовой таблице программа определяет, какой букве или знаку соответствует это число.
Сколько разных символов можно закодировать одним байтом?
В одном байте 8 двоичных разрядов, поэтому он позволяет получить 2⁸ = 256 разных кодов. Это не означает, что любая однобайтовая таблица обязательно использует все коды для букв.
Почему одинаковый текст может занимать разный объём?
Размер зависит от количества символов и от того, сколько места занимает код каждого из них. В одних кодировках символ может занимать один байт, а в других — несколько байтов.
Что такое Unicode и зачем он нужен?
Unicode — стандарт, предназначенный для представления символов многих языков и письменностей. Он позволяет использовать единый набор кодов для букв, знаков и других символов, а конкретный объём хранения зависит от выбранного способа кодирования Unicode.
Почему при открытии файла вместо букв появляются непонятные символы?
Чаще всего файл прочитан не в той кодировке, в которой его сохранили. Программа использует другую таблицу соответствий и поэтому показывает неверные знаки; обычно помогает выбрать исходную кодировку.
11.2. Текст