Вы уже знаете, что не зависимо от того, какого типа информацию вы храните или собираетесь хранить в компьютере, все данные имеют двоичное представление, т.е. все хранится в двоичных числах. Эти двоичные числа могут представляться в разных системах счисления: - восьмеричной, - десятичной, - шестнадцатеричной...
Возникает вопрос, если числа хранятся в двоичном формате, то каким образом мы храним буквы, знаки препинания и другую информацию? И каким образом мы их выводим на экран монитора? Все знаки, которые вы видите на экране монитора выводятся в виде символов. Даже сами цифры на экране монитора должны отображаться в виде символа, который соответствует тому числу, которое мы хотим отобразить.
По этому существует определенная "договоренность", что такая то последовательность битов и байтов обозначает конкретный отображаемый символ. Такая договоренность - есть суть общий стандарт для всех. Используется так называемаяКОДИРОВКА, а еще точнее - таблица символов ASCII (кодовая таблица) . Т.е. если мы будем использовать общую систему кодирования символов (кодировку), то проблем с отображением символов у нас не будет.
ASCII (American Standard Code for Information Interchange) - американский стандартный код для обмена информацией; таблица символов, в котором каждому символу присвоены специальные коды - от 0 до 255 Эти коды и говорят как нарисовать на экране тот или иной символ.
Вы наверняка сталкивались с ситуацией, когда полученное электронное письмо в вашей почтовой программе отображается в виде каких то иероглифов или "кракозябр". Это есть пример несоответствия кодировок: письмо было отправлено в одной кодировке, а ваша программа пытается прочесть его используя другую кодовую страницу. Вернуть текст в читаемый вид можно будет только в том случае, если вы подберете именно ту кодовую таблицу, которая использовалась при отправке вам письма.
Нарушение кодировки также иногда случается при просмотре веб-сайтов в интернете. Ситуация точно такая же, что и с электронным письмом.
Если вы немного знаете веб программирование, то вам наверняка встречались такие понятия как ЧАРСЕТ (charset) - указание конкретной кодировки в которой отображается информация. Их существует великое множество для разных языков.
Наиболее используемые: - windows-1251 (Кириллица) - KOI8-R (Кириллица) - ISO-8859-1 (Западно-Европейская) - и т.д.
В данных таблицах кодировок определенный диапазон чисел выделен для отображения буквенной информации, другой - для отображения цифр, другой - для псевдографики и спец символов и т.д.
Изначально кодовые таблицы состояли из 7 битов, которые могли хранить довольно ограниченное количество знаков, а именно 128 Поскольку на заре развития компьютерной технологии большее распространение компьютеры имели в США и Европе, то основным языком были английский и европейские, и алфавиты этих стран вполне нормально укладывались в размерность семи бит.
По мере распространения компьютерной техники по миру семи бит под алфавит стало не хватать, поскольку многие языки имеют отличный от латиницы алфавит: кириллица, восточные языки... В следствии этого появился следующий стандарт использующий для кодировки 8 бит - (256 знаков) Этого количества вполне хватает для двух алфавитов и управляющих и других спец символов. Ярким представителем такой кодовой страницы для кириллицы является кодировка KOI8-R
KOI8-R - была разработана советскими разработчиками. Компьютеры же которые поступали на наш рынок, с операционной системой Windows, комплектовались кодовой таблицей windows-1251 и эти кодировки оказались несовместимыми между собой из-за несовпадения кодов.
Но вот если вы хотите отобразить на экране сразу несколько алфавитов, то это уже не получится реализовать. В результате этого, следующей модификации стандарта была принята универсальная кодировка Юникод (unicod) - специальный способ кодирования который дает инструкции как производить кодирование символьной информации.. Юникод существует в виде однобайтного и двухбайтного - UTF-8 и UTF-16. Это позволило значительно расширить диапазон хранимых кодов для символов.
- при помощи одного байта кодируются управляющие символы и знаки английского и европейского алфавита - при помощи двух байт кодируются кириллица и дополнительные символы - при помощи трех символов - кодируются арабские азбуки и иероглифы