Найти в Дзене
Симпличные условия

Как хранится текст в компьютере. Часть 2.

Здравствуй и хорошей, товарищ! Я хочу сыграть с тобой в одну игру. Я загадал слово и зашифровал его в числовом виде: 420 43E 43C 430 43D. Твоя задача - отгадать это слово, используя следующую таблицу: Если у тебя получилось, то ты уже на 50% владеешь темой статьи, поздравляю! Загаданное слово - Роман. Это - моё имя, и я приветствую тебя на канале "Симпличные условия", где о сложном говорится просто. Статья ниже направлена на новичков в компьютере и только на них. Задумывался ли ты о том, как текст хранится в компьютере или смартфоне? Для книги нужно много страниц, а для текста в компьютере - лишь небольшая коробочка, именуемая жёстким диском. Как буквы туда умещаются? Наше человечество законсервировало способ хранения букв и знаков ещё около 50 лет назад. Из-за того, что человек не придумал (и не собирается) ничего лучше нулей и единиц для компьютера, информация ниже будет актуальна достаточно долго. Если ты вдруг пропустил первую часть статьи, то нажимай сюда. Ну очень много код
Оглавление

Здравствуй и хорошей, товарищ!

Я хочу сыграть с тобой в одну игру. Я загадал слово и зашифровал его в числовом виде: 420 43E 43C 430 43D. Твоя задача - отгадать это слово, используя следующую таблицу:

-2

Если у тебя получилось, то ты уже на 50% владеешь темой статьи, поздравляю!

Загаданное слово - Роман. Это - моё имя, и я приветствую тебя на канале "Симпличные условия", где о сложном говорится просто. Статья ниже направлена на новичков в компьютере и только на них.

Задумывался ли ты о том, как текст хранится в компьютере или смартфоне? Для книги нужно много страниц, а для текста в компьютере - лишь небольшая коробочка, именуемая жёстким диском. Как буквы туда умещаются?

Наше человечество законсервировало способ хранения букв и знаков ещё около 50 лет назад. Из-за того, что человек не придумал (и не собирается) ничего лучше нулей и единиц для компьютера, информация ниже будет актуальна достаточно долго.

Если ты вдруг пропустил первую часть статьи, то нажимай сюда.

Ну очень много кодировок...

-3

ASCII довольно быстро сменили неудобные 7 бит на 8 бит на символ. Старт интернет-эпохи в 1969 году дал этому огромный толчок. По формуле из предыдущей статьи, получается, что всего вариантов стало 256. Первые 32 символа были отданы управляющим знакам. Остальные 96 символов до 127 (отсчет от 0) были отданы английским символам. 127 - это DEL - возврат на один символ (Backspace).

Кодовая страница ASCII-7бит
Кодовая страница ASCII-7бит

Ты спросишь: "А что же с остальными языками? Им что, оставшиеся 128 символов?" Да, им оставшиеся 128 символов. Такой расклад стал называться Расширенным ASCII. Каждая страна сама определяла эту часть. Вот, к примеру, советский вариант, названный КОИ-8("Код обмена информацией"):

Кодовая страница КОИ-8
Кодовая страница КОИ-8

То, что находится сверху, называется псевдографикой. С помощью нее во время отсутствия развитых графических интерфейсов рисовали красивые рамки и рисуночки, дав начало такому явлению, как ASCII-арт (читается как "а́ски-арт").

Заметь, как расположены буквы русского алфавита. Они расположились таким образом, чтобы в точности повторить расположение английских букв. Это сделано затем, чтобы в случае использования 7-битных машин можно было отбросить один бит и получить написанное по-русски транслитом.

К примеру, возьмем букву "Ц". У нее номер 227 - в двоичном коде это 1100011. Биты считаются справа налево, поэтому восьмой бит - это тот, что слева. Если мы его теряем, то получаем 1100011 - это число 99, буква "c" в таблице английских символов. Уж не знаю, по ошибке или по скрытым советским целям они перепутали заглавные и прописные буквы - это вопрос к Андрею Чернову - автору этой кодировки и одному из создателей Рунета.

Ты морячка, я - ÍÏÒÑË

Выражение лица у иностранца, получившего письмо от нас на ASCII
Выражение лица у иностранца, получившего письмо от нас на ASCII

Так как остальные 128 символов отданы другим языкам, то как ты понимаешь, кроме СССР свои символы определили и другие страны. Поэтому электронное сообщение в другое государство можно было получить как "ÍÏÒÑË" или чего похуже.

Количество вариантов кодировок увеличивалось, подобно воде в наполняемой ванной. И был риск получить кучу независимых и несовместимых между собой устройств, если бы эта ванна переполнилась. Кроме КОИ-8 (где было несколько вариантов кодировок в зависимости от республики) появились уточнения для стран, именуемые стандартами. Самым известным стал стандарт ISO 8859 - вместил 16 кодовых страниц (или наборов символов) для разных языков. ISO называется так в честь создателей: International Organization for Standardization (Международная организация стандартизации).

-7

Эти стандарты принимали и создатели компьютеров. Наш русский язык был в пятой кодовой странице этого стандарта - ISO 8859-5. На компьютерах IBM (очень популярные в то время) эта кодировка называлась CP855 (но не особо использовалась), у Windows - Windows-28595. Выглядели они все одинаково:

Кодовая страница ISO 8859-5. Цифры и буквы в заголовках слева и сверху - это шестнадцатиричное представление числа.Читается начиная с символа слева. То есть буква А - это B0.
Кодовая страница ISO 8859-5. Цифры и буквы в заголовках слева и сверху - это шестнадцатиричное представление числа.Читается начиная с символа слева. То есть буква А - это B0.

При чем тут Python?

-9

Где-то в начале 90-х годов русское отделение Microsoft и две российские компании "Параграф" и "Диалог" утвердили кодировку, которая отличается от КОИ-8 и ISO 8859-5 тем, что в ней есть все необходимые символы типографии для обычного текста. Проще говоря, в ней есть все символы для славянских языков и она проста в использовании. Имя этой кодировке - Windows-1251 или CP1251.

-10

И спрашивается: а причем тут Python? Очень даже притом. Python появляется где-то в этом же временном промежутке и для работы с файлами использует кодировки, популярные в странах. Windows-1251 очень удобная, а потому получила распространение на большинстве компьютеров. Python для чтения файлов по умолчанию до сих пор кодирует с ее помощью.

-11

Поэтому, чтобы прочитать файл правильно, нужно поставить параметр encoding. С помощью него компьютер поймет, что текст нужно воспринимать в другой кодировке, не относящейся к ASCII.

with open('text.txt',encoding = 'utf-8') as file:
print(file.read())

А вот что такое UTF-8 и как он относится к Unicode - узнаешь в уже третьей части статьи. Я думал нагрузить эту статью и Юникодом тоже, но решил, что для восприятия это будет перебор.

-12

Как же решили проблему национальных символов и вместили смайлики в Юникоде? Узнаешь через неделю, в воскресение 17 июля в третьей части. Я буду очень рад твоей поддержке:

  • подписывайся на канал
  • комментируй
  • ставь лайк

Спасибо, что дочитал или дочитала! Увидимся в тексте следующей статьи!

-13