Лекция 5. Кодировки и форматы данных, используемые в Интернет.

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

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

В ОС UNIX под файлом понималась последовательность байтов. Стало легче хранить данные на диске, так как не надо было запоминать размер записи.

UNIX оказал очень большое влияние на другие операционные системы персональных компьютеров. Почти все они поддерживают идею UNIX о том, что файл – это просто последовательность байтов. Файлы, представляющие собой поток данных, стали использоваться при обмене информацией между компьютерными системами. Если используется более сложная структура файла (как в операционных системах OS/2 и MacOS), она всегда может быть преобразована в поток байтов, передана и на другом конце канала связи воссоздана в исходном виде.

Итак, мы можем считать, что файл – это поименованная последовательность байтов.

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

Способ, которым организованы данные, называется форматом файла.

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

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

Все файлы условно можно разделить на две категории – текстовые и двоичные.

Текстовые файлы - наиболее распространенный тип данных во всем компьютерном мире. Для хранения каждого символа чаще всего отводится один байт, а кодирование текстовых файлов выполняют с помощью специальных таблиц, в которых каждому символу соответствует определенное число, не превышающее 255. Файл, для кодировки которого используется только 127 первых чисел, называется ASCII-файлом (сокращение от American Standard Code for Information Intercange -- американский стандартный код для обмена информацией), но в таком файле не могут быть представлены буквы, отличные от латиницы (в том числе и русские). Большинство национальных алфавитов можно закодировать с помощью восьмибитной таблицы. Для русского языка наиболее популярны на данный момент три кодировки: Koi8-R, Windows-1251 и, так называемая, альтернативная (alt) кодировка.

В стандарте Unicode (UTF-8) кодирования символов используется диапазон чисел от 0 до 65 535.

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

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

В России первой возникла кодировка KOI8 (код обмена информации восьмибитный), соответствующая стандарту ГОСТ 19768-74. Она была разработана в середине семидесятых годов специалистами одного из советских НИИ и к се редине восьмидесятых стала базовой кодировкой для только что появившихся тогда в нашей стране русифицированных UNIX-совместимых операционных систем. Именно благодаря этому на сегодняшний день KOI8 является основным стандартом для серверов, работающих на базе платформы UNIX (например, для http-сервера Apache), а также используется в качестве формата по умолчанию при пересылке сообщений электронной почты на русском языке.

Компания Microsoft, создавая программное обеспечение для работы в Интернет, как водится, пошла своим путем, предложив стандарт Microsoft code page1251 (Windows 1251), получивший чрезвычайно широкое распространение благодаря популярности операционной системы Microsoft Windows и http-сервера Internet Information Server. Именно поэтому и Windows 1251, и KOI8-R входят в тот минимально допустимый набор кодировок, которые должна обязательно поддерживать любая web-страница.

Кодировка ISO-8859-5 была разработана Комитетом по международным стандартам (International Standards Organization, ISO) и применяется в основном в UNIX-совместимых операционных системах. Поскольку данный набор символов был создан западными специалистами, плохо знакомыми не только с самим русским языком, но и с уже имеющимся многообразием кодировок кириллицы, ISO не получила широкого распространения, однако все же достаточно часто встречается в Интернет и активно поддерживается рядом русскоязычных серверов.

Универсальный международный стандарт Unicode был создан с благородной целью объединить все существующие на сегодняшний день национальные кодировки в одну. Поскольку для отображения одного символа в Unicode отводится не один байт, как это принято во всех остальных стандартах, а два, данная кодировка включает в себя 65 536 знаков вместо 256. В это число входят не только буквы всех алфавитов мира как существующих ныне или созданных искусственно, так и уже практически вымерших, но и множество специальных символов - математических, музыкальных, физических.

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

Когда по каким-либо причинам необходимо перевести текст из одной кодировки в другую (а такие ситуации возникают довольно часто), обычно применяют одну из многочисленных программ-перекодировщиков, которые можно без труда найти на сайтах, предлагающих бесплатное программное обеспечение. Например, Recoder, которую можно найти по адресу http://tpz.tarusa.ru/ recoder.phtml, или SNK Decode!, расположенную на www.snkey.net.