Для чего кодируется информация

Кодирование информации

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

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Это означает, что при кодировании текста каждому символу присваивается определенное значение в виде нулей и единиц – байта.

Зачем кодировать информацию?

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

Стандарты кодирования текста

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

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

ASCII

UNICODE

Нужно было спасать положение в плане совместимости таблиц кодировки. Поэтому, со временем были разработаны новые обновлённые стандарты. В настоящее время наиболее популярной является кодировка под названием UNICODE. В ней каждый символ кодируется с помощью 2-х байт, что соответствует 216=62536 разным кодам.

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Стандарты кодирования графических данных

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

Растровая графика

В растровой графике изображение представлено набором цветных точек. Такие точки называют пикселями (pixel). При увеличении изображения такие точки превращаются в квадратики.

Для кодирования чёрно-белого изображения каждый пиксель кодируется одним битом. К примеру, чёрный цвет — 0, а белый — 1)

Наше прошлое изображение можно закодировать так:

При кодировании нецветных изображений чаще всего применяют палитру из 256 оттенков серого, начиная от белого и заканчивая чёрным. Поэтому для кодирования такой градации достаточно одного байта (28=256).

В кодирования цветных изображений применяют несколько цветовых схем.

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

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

Таким образом, для кодирования модели из трёх цветов в 256 тонов, получается свыше 16,5 миллионов разных цветовых оттенков. То есть для кодирования применяют 3⋅8=24 бита, что соответствует 3 байтам.

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

Чтобы определить размер изображения нужно умножить количество пикселей в ширину на длину количество пикселей и ещё раз умножить на размер самого пикселя в байтах.

I=a*b*i

К примеру, цветное изображение размером 800⋅600 пикселей, занимает 60000 байт.

Векторная графика

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

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Стандарты кодирования звука

Звуки, которые слышит человек, представляют собой колебания воздуха. Звуковые колебания – это процесс распространения волн.

Звук имеет две основные характеристики:

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

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Компакт-диск объемом 700 Мб, вмещает порядка 80 минут звука CD-качества.

Стандарты кодирования видео

Как вы знаете, видеоряд состоит из быстро меняющихся фрагментов. Смена кадров происходит со скоростью в интервале 24-60 кадров в секунду.

Размер видеоряда в байтах определяется размером кадра (количеством пикселей на экран по высоте и ширине), количеством используемых цветов, а также количеством кадров в секунду. Но наряду с этим может присутствовать ещё и звуковая дорожка.

Источник

Что такое кодирование и шифрование информации: отличия и особенности

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Часто в процессе программирования мы слышим разные слова и определения, которые вроде означают одно и т о ж е, но на самом деле имеют различное значение. Сегодня разберем две такие пары:

Часто значение этих двух слов путают, а на самом деле они означают разные рабочие направления.

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

Кодирование и шифрование информации

Что такое хеширование

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

Для расчета таких хеш-сумм применяются специализированные скрипты. Примером применения хеша является:

Что такое шифрование информации

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

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

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

Что такое кодирование информации

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

Типичными примерами кодирования являются:

Подытожим

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Практическое применение кодирования информации

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

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

Практическая значимость: материал статьи может быть использован в качестве дополнительного при рассмотрении вопроса о кодировании информации или как учебный материал при проведении семинарского занятия.

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

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

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

Для любой операции над информацией (даже такой простой, как сохранение) она должна быть как-то представлена (записана, зафиксирована). Этот процесс имеет специальное название – кодирование информации.

ПРЕДСТАВЛЕНИЕ И КОДИРОВАНИЕ ИНФОРМАЦИИ.

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

Кодирование информации необычайно разнообразно. Указания водителю автомобиля кодируются в виде дорожных знаков. Музыкальное произведение кодируется с помощью знаков нотной грамоты, для записи шахматных партий и химических формул созданы специальные системы записи. Любой грамотный компьютерный пользователь знает о существовании кодировок символов. Географическая карта кодирует информацию о местности. Необходимость кодирования речевой информации возникла в связи с бурным развитием техники связи, особенно мобильной связи. Людьми были придуманы специальные коды: Азбука Брайля, азбука Морзе, флажковая азбука. Таких примеров можно приводить очень много.

Известно, что одну и ту же информацию мы можем выразить разными способами.

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

Таким образом, кодирование информации – это процесс формирования определенного представления информации. Значимость кодирования возросла в последние десятилетия в связи с внедрением ЭВМ.

C появлением компьютеров возникла необходимость кодирования всех видов информации, с которыми имеет дело и отдельный человек, и человечество в целом. Пписьменность и арифметика – есть не что иное, как система кодирования речи и числовой информации. Информация никогда не появляется в чистом виде, она всегда как-то представлена, как-то закодирована.

Код, знак и язык позволяют передавать информацию в символическом виде, удобном для ее кодирования

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

ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ КОДИРОВАНИЯ ИНФОРМАЦИИ.

Стенография – это скоростное письмо особыми знаками, настолько краткими, что ими можно записать живую речь. Стенография пришла к нам из древнейших времен. Еще в Древнем Египте скорописцы записывали речь фараонов. Широкое распространение стенография получила в Древней Греции. В 1883 г. в Акрополе была найдена мраморная плита, на которой были высечены стенографические знаки. По мнению ученых, эти записи были сделаны в 350 г. до н.э. Но общепризнанным днем рождения стенографии считается 5 декабря 63 года до н.э. Тогда в Древнем Риме возникла необходимость дословной записи устной речи. Автором древнеримской стенографии считается Тирон – секретарь знаменитого оратора Цицерона.

В современном мире, несмотря на обилие средств механической фиксации слова (магнитофонов, диктофонов), владение навыками стенографии по-прежнему ценится. Мы записываем в среднем в пять раз медленнее, чем говорим. Стенография же ликвидирует этот разрыв. Она особенно полезна при конспектировании лекций, публичных выступлений, бесед, составлении докладов, подготовке статей и т. п.

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

Телефонный план нумерации.

В России используется закрытая десятизначная нумерация. Это значит, что любой полный телефонный номер с кодом региона или мобильной сети должен иметь 10 цифр. Это называется Национальный телефонный номер. При звонке на телефон с отличным от “домашнего” кодом региона понадобится дополнительно набирать код выхода на междугороднюю связь (“8”).

Персональные данные.

В последнее время очень актуален вопрос о персональных данных. Персональные данные человека записаны в его паспорте.

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

Штрих-коды.

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

В настоящее время в России и за рубежом ведутся большие работы по созданию автоматизированных систем обработки данных с применением машиночитаемых документов (МЧД), одной из разновидностей которых являются документы со штриховыми кодами. К машиночитаемым относятся товаросопроводительные документы, ярлыки и упаковки товаров, чековые книжки и пластиковые карточки для оплаты услуг, магнитные носители. В связи с этим появились термины “электронные ведомости”, “электронные деньги” и т. д.

Наиболее перспективным и быстроразвивающимся направлением автоматизации процесса ввода информации в ЭВМ является применение штриховых кодов.

Штриховой код представляет собой чередование темных и светлых полос разной ширины. Структура штрихового кода представлена на слайде.

В настоящее время штриховые коды широко используются не только при производстве и в торговле товарами, но и во многих отраслях промышленного производства.

Смайлики.

Компьютерный диалект используется в основном для неформального общения её членов, поэтому возникла необходимость передачи эмоций и даже мимики пишущего. В обычном тексте сделать это достаточно сложно, из-за чего и появились специфические знаки препинания (так называемые смайлики). Для их чтения лучше всего немного наклонить голову влево: тогда можно увидеть стилизованный портрет компьютерщика. Интересна история создания смайлика (Приложение 4).

Смайликами (от smile – улыбка) в Интернете называют значки, составленные из знаков препинания, букв и цифр, обозначающие какие-то эмоции.

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

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

ЗАКЛЮЧЕНИЕ.

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

Для наглядности представления материала может быть использованы слайды презентации из Приложения 5.

Источник

Процесс кодирования информации

Что такое кодирование информации

Кодирование – это процесс преобразования данных из исходной формы представления в коды.

Код – это набор условных символов для представления информации.

К целям использования кодирования относятся:

Осторожно! Если преподаватель обнаружит плагиат в работе, не избежать крупных проблем (вплоть до отчисления). Если нет возможности написать самому, закажите тут.

Виды кодирования информации, какие бывают способы изменения вида

Перевести в систему кодов можно текст, цвета, графическое изображение, числа, звук, видео и т.д.

Кодирование текстовой информации

Выделяют 3 основных вида кодирования текста:

Поскольку вся информация представлена в памяти компьютера в двоичной системе, для работы с текстом в ЭВМ используют числовой способ кодирования.

Изначально кодирование символов осуществлялось по 7-битному стандарту. В этой системе вычислительная машина записывала в свою память 128 разных состояний. Каждому из них соответствовала определенная буква, знак или символ.

7-битной системы было недостаточно для записи всех мировых языков. По этой причине создатели программ перешли на 8-битный стандарт, который позволил преобразовать 256 разных знаков.

Двоичное кодирование предполагает, что каждый знак соответствует уникальному двоичному коду. В стандартном коде информационного обмена ASCII регламентируется присвоение символу такой последовательности. Первые 33 кода – это операции, такие как пробел, ввод и т.п. Коды 33 – 127 соответствуют буквам латинского алфавита, цифрам, арифметическим символам и знакам препинания. Коды 128 – 255 – это буквы национального алфавита.

Впервые русские буквы были закодированы в стандарте КОИ-8 на вычислительных машинах с операционной системой UNIX. На сегодняшний день более широко используется стандартная кодировка Microsoft Windows с обозначением «Кириллица». Русские буквы для операционной системы MS-DOS преобразуются в стандарте СР866. В устройствах серии Macintosh компании Apple – это кодировка Мас. Еще один стандарт для представления русского алфавита – ISO 8859-5.

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

Для работы в интернете применяют международную кодировку Unicode. В отличие от 8-битного стандарта, для преобразования символов использует 2 байта, а не 1. Это позволяет закодировать 65536 различных символов.

Кодирование цвета

Для управления яркостью вводят еще один бит, и получается модель IRGB (от английского Intensity – интенсивность). При этом образуются 8 дополнительных кодов, соответственно, цветовая гамма расширяется до 16 оттенков. Добавляются серый, ярко-синий, ярко-зеленый, ярко-голубой, ярко-красный, ярко-лиловый, ярко-желтый, ярко-белый.

Создание более богатой палитры осуществляется в 6-битной системе, называемой RrGgBb. Код 00 означает, что цвет выключен, 01 – это слабый цвет, 10 – обычный оттенок и 11 – интенсивный. В этом случае можно закодировать 64 цвета. Несмотря на это, на экране параллельно могут отражаться до 16 оттенков, поскольку кодирование в кадровом буфере происходит в 4-битной системе. Представление цвета в RrGgBb применяется на видеоадаптерах EGA.

Еще более широкая гамма доступна в видеоинтерфейсе VGA. Благодаря отведению 6 байт на шифровку каждого основного цвета, количество тонов увеличилось до 256 тыс. Из них на экране одновременно отражается максимум 256 оттенков, так как видеобуфер использует 8-битное преображение информации.

В принтерах используется иная цветовая модель – CMYK. Она базируется на голубом, фиолетовом, желтом и черном цветах (Cyan, Magenta, Yellow, Key color – обозначение черного цвета). Так как эти тона получены при вычитании из белого основных цветов, модель называется субстрактивной.

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

Кодирование графической информации

Представление графической информации в компьютерах подразделяется на два формата:

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

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

Кодирование числовой информации

Числа в памяти вычислительных машин хранятся в двоичной системе счисления. Выделяют два способа представления чисел:

Целочисленные значения в компьютере представлены с фиксированной запятой.

Целое положительное число переводят в двоичную систему счисления. К полученному коду приписывают 2 нуля слева. Крайний разряд слева в положительном числе равен 0.

Целое отрицательное число преобразуется следующим образом. Число без минуса переводят в двоичную систему, дополняют его нулями слева. Образовавшийся код переводят в обратный, заменяя нули единицами, а единицы – нулями. К полученной комбинации чисел прибавляют 1.

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

Кодирование звуковой информации

Звук – это волны с постоянно меняющейся частотой и интенсивностью, вызванные колебанием частиц. Человек распознает звук благодаря меняющемуся давлению акустической волны на препятствия. Громкость звука зависит от акустики звуковой волны, а тон – от частоты.

При оцифровке непрерывная акустическая волна временно превращается в прерывистую. Дискретная форма представляет собой короткие отрезки с неизменным сигналом.

Частота дискретизации – количество измерений громкости в секунду.

Глубина кодирования звука – количество данных, необходимое для преобразования прерывистых уровней громкости звукового сигнала.

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

Кодирование видеозаписи

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

Принципы преобразования звука видеозаписи в двоичную систему аналогичны с кодированием обычной звуковой информации.

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

По завершении процесса кодирования звуковой дорожки и графики получается двоичный код для хранения в памяти ПК и других электронных носителях. Синхронность воспроизведения видеозаписи осуществляется путем разделения этих операций.

Источник

Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор

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

Чтобы получить детальное понимание этого вопроса придется прочитать и свести воедино не одну статью и потратить довольно значительное время на это. В данном материале же это все собрано воедино и по идее должно сэкономить время и разбор на мой взгляд получился довольно подробный.

О чем будет под катом: принцип работы одно байтовых кодировок (ASCII, Windows-1251 и т.д.), предпосылки появления Unicode, что такое Unicode, Unicode-кодировки UTF-8, UTF-16, их отличия, принципиальные особенности, совместимость и несовместимость разных кодировок, принципы кодирования символов, практический разбор кодирования и декодирования.

Вопрос с кодировками сейчас конечно уже потерял актуальность, но все же знать как они работают сейчас и как работали раньше и при этом не потратить много времени на это думаю лишним не будет.

Предпосылки Unicode

Начать думаю стоит с того времени когда компьютеризация еще не была так сильно развита и только набирала обороты. Тогда разработчики и стандартизаторы еще не думали, что компьютеры и интернет наберут такую огромную популярность и распространенность. Собственно тогда то и возникла потребность в кодировке текста. В каком то же виде нужно было хранить буквы в компьютере, а он (компьютер) только единицы и нули понимает. Так была разработана одно-байтовая кодировка ASCII (скорее всего она не первая кодировка, но она наиболее распространенная и показательная, по этому ее будем считать за эталонную). Что она из себя представляет? Каждый символ в этой кодировке закодирован 8-ю битами. Несложно посчитать что исходя из этого кодировка может содержать 256 символов (восемь бит, нулей или единиц 2 8 =256).

Первые 7 бит (128 символов 2 7 =128) в этой кодировке были отданы под символы латинского алфавита, управляющие символы (такие как переносы строк, табуляция и т.д.) и грамматические символы. Остальные отводились под национальные языки. То есть получилось что первые 128 символов всегда одинаковые, а если хочешь закодировать свой родной язык пожалуйста, используй оставшуюся емкость. Собственно так и появился огромный зоопарк национальных кодировок. И теперь сами можете представить, вот например я находясь в России беру и создаю текстовый документ, у меня по умолчанию он создается в кодировке Windows-1251 (русская кодировка использующаяся в ОС Windows) и отсылаю его кому то, например в США. Даже то что мой собеседник знает русский язык, ему не поможет, потому что открыв мой документ на своем компьютере (в редакторе с дефолтной кодировкой той же самой ASCII) он увидит не русские буквы, а кракозябры. Если быть точнее, то те места в документе которые я напишу на английском отобразятся без проблем, потому что первые 128 символов кодировок Windows-1251 и ASCII одинаковые, но вот там где я написал русский текст, если он в своем редакторе не укажет правильную кодировку будут в виде кракозябр.

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

Небольшой практикум ASCII

Возможно покажется элементарщиной, но раз уж решил объяснять все и подробно, то это надо.

Вот таблица символов ASCII:

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация

Тут имеем 3 колонки:

Unicode

С предпосылками создания общей таблицы для всех в мире символов, разобрались. Теперь собственно, к самой таблице. Unicode — именно эта таблица и есть (это не кодировка, а именно таблица символов). Она состоит из 1 114 112 позиций. Большинство этих позиций пока не заполнены символами, так что вряд ли понадобится это пространство расширять.

Разделено это общее пространство на 17 блоков, по 65 536 символов в каждом. Каждый блок содержит свою группу символов. Нулевой блок — базовый, там собраны наиболее употребляемые символы всех современных алфавитов. Во втором блоке находятся символы вымерших языков. Есть два блока отведенные под частное использование. Большинство блоков пока не заполнены.

Итого емкость символов юникода составляет от 0 до 10FFFF (в шестнадцатиричном виде).

Записываются символы в шестнадцатиричном виде с приставкой «U+». Например первый базовый блок включает в себя символы от U+0000 до U+FFFF (от 0 до 65 535), а последний семнадцатый блок от U+100000 до U+10FFFF (от 1 048 576 до 1 114 111).

Отлично теперь вместо зоопарка национальных кодировок, у нас есть всеобъемлющая таблица, в которой зашифрованы все символы которые нам могут пригодиться. Но тут тоже есть свои недостатки. Если раньше каждый символ был закодирован одним байтом, то теперь он может быть закодирован разным количеством байтов. Например для кодирования всех символов английского алфавита по прежнему достаточно одного байта например тот же символ «o» (англ.) имеет в юникоде номер U+006F, то есть тот же самый номер как и в ASCII — 6F в шестнадцатиричной и 111 в десятеричной. А вот для кодирования символа «U+103D5» (это древнеперсидская цифра сто) — 103D5 в шестнадцатиричной и 66 517 в десятеричной, тут нам потребуется уже три байта.

Решить эту проблему уже должны юникод-кодировки, такие как UTF-8 и UTF-16. Далее речь пойдет про них.

UTF-8 является юникод-кодировкой переменной длинны, с помощью которой можно представить любой символ юникода.

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

Немного отступлю от темы, надо написать про совместимость ASCII и UTF

То что латинские символы и основные управляющие конструкции, такие как переносы строк, табуляции и т.д. закодированы одним байтом делает utf-кодировки совместимыми с кодировками ASCII. То есть фактически латиница и управляющие конструкции находятся на тех же самых местах как в ASCII, так и в UTF, и то что закодированы они и там и там одним байтом и обеспечивает эту совместимость.

Сравним на практике как будет выглядеть фраза «Hello мир» в трех разных кодировках: Windows-1251 (русская кодировка), ISO-8859-1 (кодировка западно-европейских языков), UTF-8 (юникод-кодировка). Суть данного примера состоит в том что фраза написана на двух языках. Посмотрим как она будет выглядеть в разных кодировках.

Для чего кодируется информация. Смотреть фото Для чего кодируется информация. Смотреть картинку Для чего кодируется информация. Картинка про Для чего кодируется информация. Фото Для чего кодируется информация
В кодировке ISO-8859-1 нет таких символов «м», «и» и «р».

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

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

01001000 01100101 01101100 01101100 01101111 00100000 11101100 11101000 11110000
Отлично, вот это и есть фраза «Hello мир» в кодировке Windows-1251.

Теперь представим что вы имеете файл с текстом, но не знаете в какой кодировке этот текст. Вы предполагаете что он в кодировке ISO-8859-1 и открываете его в своем редакторе в этой кодировке. Как сказано выше с частью символов все в порядке, они есть в этой кодировке, и даже находятся на тех же местах, но вот с символами из слова «мир» все сложнее. Этих символов в этой кодировке нет, а на их местах в кодировке ISO-8859-1 находятся совершенно другие символы. А конкретно «м» — позиция 236, «и» — 232. «р» — 240. И на этих позициях в кодировке ISO-8859-1 находятся следующие символы позиция 236 — символ «ì», 232 — «è», 240 — «ð»

Значит фраза «Hello мир» закодированная в Windows-1251 и открытая в кодировке ISO-8859-1 будет выглядеть так: «Hello ìèð». Вот и получается что эти две кодировки совместимы лишь частично, и корректно перекодировать строку из одной кодировке в другую не получится, потому что там просто напросто нет таких символов.

Тут и будут необходимы юникод-кодировки, а конкретно в данном случае рассмотрим UTF-8. То что символы в ней могут быть закодированы разным количеством байтов от 1 до 4 мы уже выяснили. Теперь стоит сказать что с помощью UTF могут быть закодированы не только 256 символов, как в двух предыдущих, а вобще все символы юникода

Работает она следующим образом. Первый бит каждого байта кодирующего символ отвечает не за сам символ, а за определение байта. То есть например если ведущий (первый) бит нулевой, то это значит что для кодирования символа используется всего один байт. Что и обеспечивает совместимость с ASCII. Если внимательно посмотрите на таблицу символов ASCII то увидите что первые 128 символов (английский алфавит, управляющие символы и знаки препинания) если их привести к двоичному виду, все начинаются с нулевого бита (будьте внимательны, если будете переводить символы в двоичную систему с помощью например онлайн конвертера, то первый нулевой ведущий бит может быть отброшен, что может сбить с толку).

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

Для двухбайтовых символов первые три бита должны быть такие — 110

для трех-байтовых символов в первом байте ведущие биты — 1110

1110 1000 10 000111 10 1010101 — суммируем все кроме управляющих битов и получаем что в 16-ричной равно 103В5, U+103D5 — древнеперситдская цифра сто ( 10000001111010101 )

для четырех-байтовых символов в первом байте ведущие биты — 11110

11110 100 10 001111 10 111111 10 111111 — U+10FFFF это последний допустимый символ в таблице юникода ( 100001111111111111111 )

Теперь, при желании, можем записать нашу фразу в кодировке UTF-8.

UTF-16

UTF-16 также является кодировкой переменной длинны. Главное ее отличие от UTF-8 состоит в том что структурной единицей в ней является не один а два байта. То есть в кодировке UTF-16 любой символ юникода может быть закодирован либо двумя, либо четырьмя байтами. Давайте для понятности в дальнейшем пару таких байтов я буду называть кодовой парой. Исходя из этого любой символ юникода в кодировке UTF-16 может быть закодирован либо одной кодовой парой, либо двумя.

Начнем с символов которые кодируются одной кодовой парой. Легко посчитать что таких символов может быть 65 535 (2в16), что полностью совпадает с базовым блоком юникода. Все символы находящиеся в этом блоке юникода в кодировке UTF-16 будут закодированы одной кодовой парой (двумя байтами), тут все просто.

символ «o» (латиница) — 00000000 01101111
символ «M» (кириллица) — 00000100 00011100

Теперь рассмотрим символы за пределами базового юникод диапазона. Для их кодирования потребуется уже две кодовые пары (4 байта). И механизм их кодирования немного сложнее, давайте по порядку.

Для начала введем понятия суррогатной пары. Суррогатная пара — это две кодовые пары используемые для кодирования одного символа (итого 4 байта). Для таких суррогатных пар в таблице юникода отведен специальный диапазон от D800 до DFFF. Это значит, что при преобразовании кодовой пары из байтового вида в шестнадцатиричный вы получаете число из этого диапазона, то перед вами не самостоятельный символ, а суррогатная пара.

Чтобы закодировать символ из диапазона 1000010FFFF (то есть символ для которого нужно использовать более одной кодовой пары) нужно:

Для примера зашифруем символ, а потом расшифруем. Возьмем древнеперсидскую цифру сто (U+103D5):

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *