P
pro·school.ru
Каталог школ

Кодировки текста: ASCII, Windows-1251 и Unicode

💻 Информатика · 9 класс

Что такое кодировка текста

Кодировка — это таблица, которая каждому символу ставит в соответствие числовой код. Компьютер хранит и обрабатывает только числа, поэтому любая буква, цифра или знак препинания перед записью в память превращается в число, а при выводе на экран — обратно в символ. Чтобы текст, набранный на одном компьютере, правильно читался на другом, оба должны использовать одинаковую таблицу кодировки.

Кодировка ASCII

Историческая основа всех кодировок — таблица ASCII (читается «аски»). В ней для кода символа отводится 7 битов, поэтому она содержит 128 символов с кодами от 0 до 127. В таблицу входят латинские буквы, цифры, знаки препинания и управляющие символы (например, перевод строки). Важная закономерность: символы идут по порядку. Код буквы A равен 65, B — 66, и так далее; код буквы a равен 97. Цифра 0 имеет код 48. Это позволяет легко находить код соседней буквы прибавлением единицы.

Однобайтовые кодировки русского текста

В одном байте 8 битов, значит он хранит 256 разных кодов (от 0 до 255). Первая половина (0–127) совпадает с ASCII, а вторую половину (128–255) разные стандарты заполняли по-своему. Для русских букв применялись кодировки Windows-1251, KOI8-R и другие. Если текст набрали в одной кодировке, а открыли в другой, вместо русских букв появляются непонятные знаки — «кракозябры».

КодировкаРазмер символаЧто кодирует
ASCII7 битовлатиница, цифры, знаки
Windows-12511 байтлатиница и кириллица
Unicode (UTF-8)1–4 байтапочти все письменности мира

Универсальный стандарт Юникод

Чтобы покончить с путаницей кодировок, создали Unicode (Юникод) — единую таблицу для символов всех языков. Каждому символу присвоен свой номер. Самый распространённый способ записи Юникода — UTF-8: латинские символы занимают в нём 1 байт, а кириллица — 2 байта.

Подсчёт объёма текста

Зная кодировку, легко вычислить размер текста. В однобайтовой кодировке каждый символ — это 1 байт.

Пример: Слово «информатика» содержит 11 букв. В кодировке Windows-1251 каждая буква занимает 1 байт, значит размер слова = 11 байт. В кодировке UTF-8 каждая русская буква занимает 2 байта, значит 11 * 2 = 22 байта.
Частые ошибки. Не путайте бит и байт: символ в однобайтовой кодировке — это именно 1 байт, а не 1 бит. Пробел — это тоже символ, его нужно учитывать при подсчёте. В UTF-8 русские и латинские буквы занимают разное число байтов.

Кратко о главном

  • Кодировка — таблица соответствия символов и числовых кодов.
  • ASCII кодирует 128 символов 7 битами; в неё входят латиница, цифры, знаки.
  • Однобайтовые кодировки (например, Windows-1251) добавляют кириллицу, но несовместимы между собой.
  • Юникод — единая таблица для всех языков; в UTF-8 латиница занимает 1 байт, кириллица — 2.
  • Размер текста = число символов, умноженное на размер одного символа.