Форматы данных и кодировки

Хранение информации на диске

Информация на цифровых носителях хранится в закодированном виде и представляет собой последовательность 0 и 1. Как это устроено физически? В основе запоминающего устройства может лежать любой физический эффект, который обеспечивает приведение системы к двум устойчивым состояниям: одно из них будет обозначать 0, другое - 1. Так, в современных устройствах используются:

  • наличие/отсутствие заряда в конденсаторе
  • направление намагниченности
  • отражение/рассеяние света от поверхности CD, DVD или Blu-ray диска

Минимальная единица хранения информации - 1 бит. С помощью него можно закодировать два значения - 0 и 1.

1 бит 2 разных значения (0 и 1) 21 = 2
2 бита 4 значения (00, 01, 10, 11) 22 = 4
3 бита 8 значений (000, 001, 010, 011, 100, 101, 110, 111) 23 = 8
4 бита 16 значений 24 = 16
5 бит 32 значения 25 = 32
6 бит 64 значения 26 = 64
7 бит 128 значений 27 = 128
8 бит 256 значений 28 = 256
9 бит 512 значений 29 = 512
10 бит 1024 значения 210 = 1024

Есть и более крупные единицы:

Название Обозначение (ГОСТ) Международный стандарт Объем
байт Б B 8 бит
килобайт КБ, Кбайт KiB 1024 Б
мегабайт МБ, Мбайт MiB 1024 КБ
гигабайт ГБ, Гбайт GiB 1024 МБ
терабайт ТБ, Тбайт TiB 1024 ГБ
килобит Кб, Кбит Kb 1000 бит
мегабит Мб, Мбит Mb 1000 Кб
гигабит Гб, Гбит Gb 1000 Мб
терабит Тб, Тбит Tb 1000 Гб

Источник: https://habrahabr.ru/post/193256/

Упорядоченность информации обеспечивается файловой системой, которая определяет формат содержимого и способ его хранения. Иными словами, файловая система - это раздел жесткого диска, выделенный для хранения файлов на компьютере и другом электронном оборудовании: мобильных телефонах, фотоаппаратах и т.д. Рассмотрим ее устройство на примере FAT - файловой системы, впервые созданной в 1976-1977 годах Биллом Гейтсом и Марком МакДональдом. Ее модификации до сих пор используются, например, на флешках.

Название FAT расшифровывается как File Allocation Table, или "таблица размещения файлов". Это значит, что "адрес" каждого файла на диске прописан в специальной таблице. Дисковое пространство разбито на кластеры, и каждый файл занимает не менее одного из них. Файловая система FAT состоит из следующих частей:

  1. Загрузочная запись
    1. BPB (BIOS parameter block) - содержит указание на тип файловой системы и физические характеристики носителя
    2. FSINFO - сообщает о том, сколько кластеров свободно
  2. FAT - та самая таблица соответствия файлов и кластеров, в которых они расположены
  3. Собственно файлы

Сразу становится понятно, почему на флешке объемом 8 Гб для записи файлов доступно всего 7,61 Гб, правда?

Файловые записи выглядят так (в ячейках можно разглядеть такие параметры как "дата создания", "дата последнего изменения", "размер" и др.)

Источник картинки: https://ru.wikipedia.org/wiki/FAT

А вот схема хранения файлов на диске:

  • File A занимает кластеры 2-4,
  • File B - кластеры 9-13,
  • File C - кластеры 18-25,
  • File D - кластеры 30-31,
  • File E - кластеры 26-28.

Все остальные кластеры свободны для записи.

Источник картинки: https://ru.wikipedia.org/wiki/FAT

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

Источник картинки: https://ru.wikipedia.org/wiki/Дефрагментация_диска

Практически любая файловая система иерархична: файлы объединяются в каталоги (папки), которые образуют одно или несколько деревьев.

Источник картинки: https://ru.wikipedia.org/wiki/Файловая-система, открытыйурок.рф/статьи/594965/img3.jpg

Расположение файла в такой структуре описывается с помощью пути. Например, hello.txt в строке C:\Users\Dereza\Documents\Library\hello.txt - это имя файла, а C:\Users\Dereza\Documents\Library - путь к нему.

Кроме того, у файла есть расширение - несколько символов после точки, которые обозначают его тип (формат): txt, doc, jpg, mp3, html... Проще говоря, расширение указывает на то, какая информация (текстовая, графическая и т.д.) находится в файле и как правильно ее раскодировать. Например, если мы попробуем вручную поменять расширение картинки с jpg на txt и затем открыть ее в текстовом редакторе, мы увидим "кракозябры", потому что байтовая последовательность, которая обозначает цвета пикселей, будет расшифрована неправильно -- в данном случае как текстовые символы.

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

Но на этом история с кракозябрами не заканчивается! Наверняка вы сталкивались с тем, что некоторые символы на каком-нибудь сайте отображаются неправильно. Дело в том, что для перевода последовательности нулей и единиц в текстовые символы используется специальная таблица, которая называется кодировкой; если текст был зашифрован с помощью одной кодировки, а расшифрован с помощью другой, то мы увидим кракозябры. Вот, например, текст на португальском языке в UTF-8, декодированный с помощью кириллической кодировки Windows-1251: все символы с диакритическими знаками, специфические для португальского языка, отображаются неправильно.

Краткая история кодировок

Источник: http://popel-studio.com/blog/article/kratkaya-istoriya-kodirovok-ot-ascii-do-utf-8.html

  1. ASCII (1963 год) — 7-битная кодировка, включающая в себя 128 символов: 33 непечатных управляющих символа (влияющих на обработку текста и пробелов) и 95 печатных символов, включая цифры, буквы латинского алфавита в строчном и прописном вариантах и ряд пунктуационных символов. Недостаток: в ASCII не было букв и символов многих национальных алфавитов.
  2. ISO/IEC 646 (1972 год) — группы кодировок, основанных на ASCII, где редко используемые символы из ASCII заменялись на необходимые. Группа включала в себя варианты кодировки для Канады, Китая, Кубы, Германии, Дании, Финляндии, Франции, Великобритании, Греции, Венгрии, Ирландии, Японии, Южной Кореи, Мальты, Норвегии, Швеции и Югославии. Стандартизация кодировок группы позволила свести различия между кодировками разных стран к минимуму.

  3. KOI8 (1974 год, СССР) — Код Обмена Информацией. Как следует из названия, это была 8-битная кодировка, что позволяло включить в нее в два раза больше символов. KOI8 включала в себя цифры, буквы латинского и русского алфавита, а также знаки пунктуации, спецсимволы и псевдографику.

  4. ISO/IEC 8859 (середина 80-х). Ранние кодировки были ограничены 7 битами из-за особенностей некоторых протоколов передачи данных. Однако со временем эти ограничения свою актуальность потеряли, в то время как необходимость в дополнительных символах для языков, использующих латинский алфавит, только росла. Поэтому в середине 80-х началась работа над группой 8-битных кодировок, получившей название ISO/IEC 8859. Все кодировки этой группы были основаны на ASCII.

  5. Windows-125x (начало 90-х ) — группа кодировок, разработанная компанией Microsoft для ОС Windows. В Windows-1251 вошли все символы русского и близких к нему языков: украинского, белорусского, болгарского, сербского и македонского. На практике этого оказалось достаточно, чтобы кодировка Windows-1251 закрепилась в интернете вплоть до распространения UTF-8.

  6. UTF-8 (Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный», 1993 год) — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6). Полностью совместима с ASCII: все символы ASCII в UTF-8 кодируются 7 битами (первый - не значащий). Каждый символ кодировки, отличный от ASCII, состоит из ведущего байта, указывающего длину последовательности, и одного или нескольких продолжающих байт. Юникодные символы можно вводить с клавиатуры с помощью одновременного нажатия комбинации клавиш Alt+XXXX (например, Alt-1, Alt-12, Alt-4657; цифры набираются на Numpad'e) в Windows и с помощью комбинации клавиш Shift+Opt+XXXX на Mac OS.

Как расшифровать кракозябры?

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

Источник картинки: https://habrahabr.ru/post/147843/

Попробуйте зайти на этот сайт, скопировать в поле ввода какой-нибудь текст, поменять кодировку и отправить другу для расшифровки (можно использовать вот этот декодер, например).

Формат PDF

Portable Document Format (PDF) — межплатформенный формат электронных документов, разработанный фирмой Adobe Systems. "Межплатформенный" в данном случае означает то, что документ будет одинаково отображаться на любом устройстве с любой операционной системой вне зависимости от того, где он был создан. Традиционным способом создания PDF-документов является виртуальный принтер, то есть документ как таковой готовится в своей специализированной программе — графическом или текстовом редакторе, а затем экспортируется ("публикуется") в формат PDF. Например, если сохранить презентацию не в .ppt(x), а в .pdf, то можно обезопасить себя от столь часто возникающих проблем с поехавшим форматированием и неправильными шрифтами при просмотре документа на другом компьютере! В последней версиях MS Office это делается вот так (пример из Word 2013):

То же самое можно сделать и в Excel, и в PowerPoint, и в Google Docs / Sheets / Slides (пример из Google Sheets):

Кроме того, любую веб-страницу можно сохранить в формате PDF, нажав кнопку "Печать" и выбрав виртуальный принтер Adobe PDF (обычно это расширение для браузера идет в комплекте с программой для просмотра PDF-документов; можно установить и любой другой виртуальный принтер из набора дополнений для вашего браузера).

results matching ""

    No results matching ""