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

Здравствуйте, уважаемые читатели блога сайт. Сегодня мы поговорим с вами про то, откуда берутся кракозябры на сайте и в программах, какие кодировки текста существуют и какие из них следует использовать. Подробно рассмотрим историю их развития, начиная от базовой ASCII, а также ее расширенных версий CP866, KOI8-R, Windows 1251 и заканчивая современными кодировками консорциума Юникод UTF 16 и 8.

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

ASCII — базовая кодировка текста для латиницы

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

Но все же отправной точкой для развития современных кодировок текстов стоит считать знаменитую ASCII (American Standard Code for Information Interchange, которая по-русски обычно произносится как «аски»). Она описывает первые 128 символов из наиболее часто используемых англоязычными пользователями — латинские буквы, арабские цифры и знаки препинания.

Еще в эти 128 знаков, описанных в ASCII, попадали некоторые служебные символы навроде скобок, решеток, звездочек и т.п. Собственно, вы сами можете увидеть их:

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

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

Тут, наверное, стоит еще немного сказать про системы счисления, которые используются при описании. Во-первых, как вы все знаете, компьютер работает только с числами в двоичной системе, а именно с нулями и единицами («булева алгебра», если кто проходил в институте или в школе). , каждый из которых представляет из себя двойку в степени, начиная с нулевой, и до двойки в седьмой:

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

В нашем примере это получается 1 (2 в степени ноль) плюс 8 (два в степени 3), плюс 32 (двойка в пятой степени), плюс 64 (в шестой), плюс 128 (в седьмой). Итого получает 233 в десятичной системе счисления. Как видите, все очень просто.

Но если вы присмотритесь к таблице с символами ASCII, то увидите, что они представлены в шестнадцатеричной кодировке. Например, «звездочка» соответствует в Аски шестнадцатеричному числу 2A. Наверное, вам известно, что в шестнадцатеричной системе счисления используются кроме арабских цифр еще и латинские буквы от A (означает десять) до F (означает пятнадцать).

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

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

Расширенные версии Аски — кодировки CP866 и KOI8-R с псевдографикой

Итак, мы с вами начали говорить про ASCII, которая являлась как бы отправной точкой для развития всех современных кодировок (Windows 1251, юникод, UTF 8).

Изначально в нее было заложено только 128 знаков латинского алфавита, арабских цифр и еще чего-то там, но в расширенной версии появилась возможность использовать все 256 значений, которые можно закодировать в одном байте информации. Т.е. появилась возможность добавить в Аски символы букв своего языка.

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

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

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

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

Например, изначально появилась CP866 , в которой была возможность использовать символы русского алфавита и она являлась расширенной версией ASCII.

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

Видите, в правом столбце цифры начинаются с 8, т.к. числа с 0 до 7 относятся к базовой части ASCII (см. первый скриншот). Т.о. русская буква «М» в CP866 будет иметь код 9С (она находится на пересечении соответствующих строки с 9 и столбца с цифрой С в шестнадцатеричной системе счисления), который можно записать в одном байте информации, и при наличии подходящего шрифта с русскими символами эта буква без проблем отобразится в тексте.

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

CP866 распространяла компания IBM, но кроме этого для символов русского языка были разработаны еще ряд кодировок, например, к этому же типу (расширенных ASCII) можно отнести KOI8-R :

Принцип ее работы остался тот же самый, что и у описанной чуть ранее CP866 — каждый символ текста кодируется одним единственным байтом. На скриншоте показана вторая половина таблицы KOI8-R, т.к. первая половина полностью соответствует базовой Аски, которая показана на первом скриншоте в этой статье.

Среди особенностей кодировки KOI8-R можно отметить то, что русские буквы в ее таблице идут не в алфавитном порядке, как это, например, сделали в CP866.

Если посмотрите на самый первый скриншот (базовой части, которая входит во все расширенные кодировки), то заметите, что в KOI8-R русские буквы расположены в тех же ячейках таблицы, что и созвучные им буквы латинского алфавита из первой части таблицы. Это было сделано для удобства перехода с русских символов на латинские путем отбрасывания всего одного бита (два в седьмой степени или 128).

Windows 1251 — современная версия ASCII и почему вылезают кракозябры

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

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

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

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

Очень часто они вылезали при отправке и получении сообщений по электронной почте, что повлекло за собой создание очень сложных перекодировочных таблиц, которые, собственно, решить эту проблему в корне не смогли, и зачастую пользователи для переписки использовали , чтобы избежать пресловутых кракозябров при использовании русских кодировок подобных CP866, KOI8-R или Windows 1251.

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

Допустим, если символы, закодированные с помощью CP866, попробовать отобразить, используя кодовую таблицу Windows 1251, то эти самые кракозябры (бессмысленный набор знаков) и вылезут, полностью заменив собой текст сообщения.

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

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

Юникод (Unicode) — универсальные кодировки UTF 8, 16 и 32

Эти тысячи знаков языковой группы юго-восточной Азии никак невозможно было описать в одном байте информации, который выделялся для кодирования символов в расширенных версиях ASCII. В результате был создан консорциум под названием Юникод (Unicode — Unicode Consortium) при сотрудничестве многих лидеров IT индустрии (те, кто производит софт, кто кодирует железо, кто создает шрифты), которые были заинтересованы в появлении универсальной кодировки текста.

Первой вариацией, вышедшей под эгидой консорциума Юникод, была UTF 32 . Цифра в названии кодировки означает количество бит, которое используется для кодирования одного символа. 32 бита составляют 4 байта информации, которые понадобятся для кодирования одного единственного знака в новой универсальной кодировке UTF.

В результате чего, один и тот же файл с текстом, закодированный в расширенной версии ASCII и в UTF-32, в последнем случае будет иметь размер (весить) в четыре раза больше. Это плохо, но зато теперь у нас появилась возможность закодировать с помощью ЮТФ число знаков, равное двум в тридцать второй степени (миллиарды символов , которые покроют любое реально необходимое значение с колоссальным запасом).

Но многим странам с языками европейской группы такое огромное количество знаков использовать в кодировке вовсе и не было необходимости, однако при задействовании UTF-32 они ни за что ни про что получали четырехкратное увеличение веса текстовых документов, а в результате и увеличение объема интернет трафика и объема хранимых данных. Это много, и такое расточительство себе никто не мог позволить.

В результате развития Юникода появилась UTF-16 , которая получилась настолько удачной, что была принята по умолчанию как базовое пространство для всех символов, которые у нас используются. Она использует два байта для кодирования одного знака. Давайте посмотрим, как это дело выглядит.

В операционной системе Windows вы можете пройти по пути «Пуск» — «Программы» — «Стандартные» — «Служебные» — «Таблица символов». В результате откроется таблица с векторными формами всех установленных у вас в системе шрифтов. Если вы выберете в «Дополнительных параметрах» набор знаков Юникод, то сможете увидеть для каждого шрифта в отдельности весь ассортимент входящих в него символов.

Кстати, щелкнув по любому из них, вы сможете увидеть его двухбайтовый код в формате UTF-16 , состоящий из четырех шестнадцатеричных цифр:

Сколько символов можно закодировать в UTF-16 с помощью 16 бит? 65 536 (два в степени шестнадцать), и именно это число было принято за базовое пространство в Юникоде. Помимо этого существуют способы закодировать с помощью нее и около двух миллионов знаков, но ограничились расширенным пространством в миллион символов текста.

Но даже эта удачная версия кодировки Юникода не принесла особого удовлетворения тем, кто писал, допустим, программы только на английском языке, ибо у них, после перехода от расширенной версии ASCII к UTF-16, вес документов увеличивался в два раза (один байт на один символ в Аски и два байта на тот же самый символ в ЮТФ-16).

Вот именно для удовлетворения всех и вся в консорциуме Unicode было решено придумать кодировку переменной длины . Ее назвали UTF-8. Несмотря на восьмерку в названии, она действительно имеет переменную длину, т.е. каждый символ текста может быть закодирован в последовательность длиной от одного до шести байт.

На практике же в UTF-8 используется только диапазон от одного до четырех байт, потому что за четырьмя байтами кода ничего уже даже теоретически не возможно представить. Все латинские знаки в ней кодируются в один байт, так же как и в старой доброй ASCII.

Что примечательно, в случае кодирования только латиницы, даже те программы, которые не понимают Юникод, все равно прочитают то, что закодировано в ЮТФ-8. Т.е. базовая часть Аски просто перешла в это детище консорциума Unicode.

Кириллические же знаки в UTF-8 кодируются в два байта, а, например, грузинские — в три байта. Консорциум Юникод после создания UTF 16 и 8 решил основную проблему — теперь у нас в шрифтах существует единое кодовое пространство . И теперь их производителям остается только исходя из своих сил и возможностей заполнять его векторными формами символов текста. Сейчас в наборы даже .

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

Кракозябры вместо русских букв — как исправить

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

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

В верхнем меню Notepad++ есть пункт «Кодировки», где у вас будет возможность преобразовать уже имеющийся вариант в тот, который используется на вашем сайте по умолчанию:

В случае сайта на Joomla 1.5 и выше, а также в случае блога на WordPress следует во избежании появления кракозябров выбирать вариант UTF 8 без BOM . А что такое приставка BOM?

Дело в том, что когда разрабатывали кодировку ЮТФ-16, зачем-то решили прикрутить к ней такую вещь, как возможность записывать код символа, как в прямой последовательности (например, 0A15), так и в обратной (150A). А для того, чтобы программы понимали, в какой именно последовательности читать коды, и был придуман BOM (Byte Order Mark или, другими словами, сигнатура), которая выражалась в добавлении трех дополнительных байтов в самое начало документов.

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

Что примечательно, некоторые программы в Windows не умеют этого делать (не умеют сохранять текст в ЮТФ-8 без BOM), например, все тот же пресловутый Блокнот Windows. Он сохраняет документ в UTF-8, но все равно добавляет в его начало сигнатуру (три дополнительных байта). Причем эти байты будут всегда одни и те же — читать код в прямой последовательности. Но на серверах из-за этой мелочи может возникнуть проблема — вылезут кракозябры.

Поэтому ни в коем случае не пользуйтесь обычным блокнотом Windows для редактирования документов вашего сайта, если не хотите появления кракозябров. Лучшим и наиболее простым вариантом я считаю уже упомянутый редактор Notepad++, который практически не имеет недостатков и состоит из одних лишь достоинств.

В Notepad ++ при выборе кодировки у вас будет возможность преобразовать текст в кодировку UCS-2, которая по своей сути очень близка к стандарту Юникод. Также в Нотепаде можно будет закодировать текст в ANSI, т.е. применительно к русскому языку это будет уже описанная нами чуть выше Windows 1251. Откуда берется эта информация?

Она прописана в реестре вашей операционной системы Windows — какую кодировку выбирать в случае ANSI, какую выбирать в случае OEM (для русского языка это будет CP866). Если вы установите на своем компьютере другой язык по умолчанию, то и эти кодировки будут заменены на аналогичные из разряда ANSI или OEM для того самого языка.

После того, как вы в Notepad++ сохраните документ в нужной вам кодировке или же откроете документ с сайта для редактирования, то в правом нижнем углу редактора сможете увидеть ее название:

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

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

Прежде, чем начать разбирать код, браузер узнает, какая версия используется и как именно нужно интерпретировать коды символов этого языка. Но что примечательно, в случае, если вы сохраняете документ в принятом по умолчанию юникоде, то это объявление xml можно будет опустить (кодировка будет считаться UTF-8, если нет BOM или ЮТФ-16, если BOM есть).

В случае же документа языка Html для указания кодировки используется элемент Meta , который прописывается между открывающим и закрывающим тегом Head:

... ...

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

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

Удачи вам! До скорых встреч на страницах блога сайт

посмотреть еще ролики можно перейдя на
");">

Вам может быть интересно

Что такое URL адреса, чем отличаются абсолютные и относительные ссылки для сайта
OpenServer - современный локальный сервер и пример его использования для установки WordPress на компьютер
Что такое Chmod, какие права доступа назначать файлам и папкам (777, 755, 666) и как это сделать через PHP
Поиск Яндекса по сайту и интернет-магазину

[8-битные кодировки: ASCII, КОИ-8R и CP1251 ] Первые таблицы кодировки, созданные в США, не использовали восьмой бит в байте. Текст представлялся как последовательность байт, но восьмой бит не учитывался (он применялся в служебных целях).

Общепризнанным стандартом стала таблица ASCII (American Standard Code for Information Interchange). Первые 32 символа таблицы ASCII (от 00 до 1F) использовались для непечатаемых символов. Они были предназначены для управления печатающим устройством и т.п. Остальная часть - от 20 до 7F - обычные (печатаемые) символы.

Таблица 1 - кодировка ASCII

Dec Hex Oct Char Description
0 0 000 null
1 1 001 start of heading
2 2 002 start of text
3 3 003 end of text
4 4 004 end of transmission
5 5 005 enquiry
6 6 006 acknowledge
7 7 007 bell
8 8 010 backspace
9 9 011 horizontal tab
10 A 012 new line
11 B 013 vertical tab
12 C 014 new page
13 D 015 carriage return
14 E 016 shift out
15 F 017 shift in
16 10 020 data link escape
17 11 021 device control 1
18 12 022 device control 2
19 13 023 device control 3
20 14 024 device control 4
21 15 025 negative acknowledge
22 16 026 synchronous idle
23 17 027 end of trans. block
24 18 030 cancel
25 19 031 end of medium
26 1A 032 substitute
27 1B 033 escape
28 1C 034 file separator
29 1D 035 group separator
30 1E 036 record separator
31 1F 037 unit separator
32 20 040 space
33 21 041 !
34 22 042 "
35 23 043 #
36 24 044 $
37 25 045 %
38 26 046 &
39 27 047 "
40 28 050 (
41 29 051 )
42 2A 052 *
43 2B 053 +
44 2C 054 ,
45 2D 055 -
46 2E 056 .
47 2F 057 /
48 30 060 0
49 31 061 1
50 32 062 2
51 33 063 3
52 34 064 4
53 35 065 5
54 36 066 6
55 37 067 7
56 38 070 8
57 39 071 9
58 3A 072 :
59 3B 073 ;
60 3C 074 <
61 3D 075 =
62 3E 076 >
63 3F 077 ?
Dec Hex Oct Char
64 40 100 @
65 41 101 A
66 42 102 B
67 43 103 C
68 44 104 D
69 45 105 E
70 46 106 F
71 47 107 G
72 48 110 H
73 49 111 I
74 4A 112 J
75 4B 113 K
76 4C 114 L
77 4D 115 M
78 4E 116 N
79 4F 117 O
80 50 120 P
81 51 121 Q
82 52 122 R
83 53 123 S
84 54 124 T
85 55 125 U
86 56 126 V
87 57 127 W
88 58 130 X
89 59 131 Y
90 5A 132 Z
91 5B 133 [
92 5C 134 \
93 5D 135 ]
94 5E 136 ^
95 5F 137 _
96 60 140 `
97 61 141 a
98 62 142 b
99 63 143 c
100 64 144 d
101 65 145 e
102 66 146 f
103 67 147 g
104 68 150 h
105 69 151 i
106 6A 152 j
107 6B 153 k
108 6C 154 l
109 6D 155 m
110 6E 156 n
111 6F 157 o
112 70 160 p
113 71 161 q
114 72 162 r
115 73 163 s
116 74 164 t
117 75 165 u
118 76 166 v
119 77 167 w
120 78 170 x
121 79 171 y
122 7A 172 z
123 7B 173 {
124 7C 174 |
125 7D 175 }
126 7E 176 ~
127 7F 177 DEL

Как легко заметить, в этой кодировке представлены только латинские буквы, причём те, которые используются в английском языке. Есть также арифметические и другие служебные символы. Но нет ни русских букв, ни даже специальных латинских для немецкого или французского языка. Это легко объяснить - кодировка разрабатывалась имено как американский стандарт. Когда компьютеры стали применяться во всём мире, потребовалось кодировать и другие символы.

Для этого было принято решение использовать восьмой бит в каждом байте. Тем самым оказались доступны ещё 128 значений (от 80 до FF), которые можно было использовать для кодирования символов. Первая из восьмибитных таблиц - “расширенный ASCII” (Extended ASCII ) - включала в себя различные варианты латинских символов, применяемые в некоторых языках Западной Европы. Также в ней были другие дополнительные символы, включая псевдографику.

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

Русских букв в таблице Extended ASCII не было. В России (ранее - СССР) и в других государствах создавались свои кодировки, позволяющие представлять в 8-битных текстовых файлах специфические “национальные” символы - латинские буквы польского и чешского языков, кириллицу (включая русские буквы) и другие алфавиты.

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

Организация ISO (International Standardization Organization - Международная Организация по Стандартам) приняла группу стандартов ISO 8859 . Она определяет 8-битные кодировки для разных групп языков. Так, ISO 8859-1 - это Extended ASCII, таблица для США и Западной Европы. А ISO 8859-5 - таблица для кириллицы (включая русский язык).

Однако по историческим причинам кодировка ISO 8859-5 не прижилась. Реально для русского языка применяются следующие кодировки:

Code Page 866 (CP866 ), она же “DOS”, она же “альтернативная кодировка ГОСТ”. Широко применялась до середины 90-х годов; теперь используется ограниченно. Практически не применяется для распространения текстов в Интернете.
- КОИ-8. Разработана в 70-80-е годы. Является общепринятым стандартом для передачи почтовых сообщений в российском Интернете. Широко применяется также в операционных системах семейства Unix, включая Linux. Вариант КОИ-8, рассчитанный на русский язык, называется КОИ-8R ; существуют версии для иных кириллических языков (так, KOI8-U - вариант для украинского языка).
- Code Page 1251, CP1251 , Windows-1251. Разработана компанией Microsoft для поддержки русского языка в системе Windows.

Основным достоинством CP866 было сохранение символов псевдографики на тех же местах, что и в Extended ASCII; поэтому могли без изменений работать зарубежные текстовые программы, например, знаменитый Norton Commander. Ныне CP866 используется для программ под Windows, работающих в текстовых окнах или в полноэкранном текстовом режиме, включая FAR Manager.

Тексты в CP866 в последние годы встречаются довольно редко (зато она используется для кодирования русских имен файлов в Windows). Поэтому мы подробнее остановимся на двух других кодировках - КОИ-8R и CP1251.



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

А вот в КОИ-8R порядок русских букв кажется случайным. Но на самом деле это не так.

Во многих старых программах при обработке или передаче текста терялся 8-й бит. (Сейчас такие программы практически “вымерли”, но в конце 80-х - начале 90-х годов они были широко распространены). Чтобы получить из 8-битного значения 7-битное, достаточно отнять от старшей цифры 8; например, E1 превращается в 61.

А теперь сравните КОИ-8R с таблицей ASCII (табл.1). Вы обнаружите, что русские буквы поставлены в чёткое соответствие с латинскими. Если исчезнет восьмой бит, строчные русские буквы превращаются в заглавные латинские, а заглавные русские - в строчные латинские. Так, E1 в КОИ-8 - это русское “А”, тогда как 61 в ASCII - латинское “a”.

Итак, КОИ-8 позволяет сохранять читаемость русского текста при потере 8-го бита. “Привет всем” превращается в “pRIWET WSEM”.

В последнее время и алфавитный порядок расположения символов в таблице кодировки, и читаемость при потере 8-го бита потеряли решающее значение. Восьмой бит в современных компьютерах не теряется ни при передаче, ни при обработке. А сортировка по алфавиту производится с учётом кодировки, а не простым сравнением кодов. (Кстати, коды CP1251 расположены не полностью по алфавиту - буква Ё не находится на своём месте).

Из-за того, что распространённых кодировок оказалось две, при работе с Интернетом (почта, просмотр Web-сайтов) иногда можно вместо русского текста увидеть бессмысленный набор букв. Например, “Я СБЮФЕМХЕЛ”. Это всего лишь слова “с уважением”; но они были закодированы в кодировке CP1251, а компьютер декодировал текст по таблице КОИ-8. Если те же слова были, наоборот, закодированы в КОИ-8, а компьютер декодировал текст по таблице CP1251, результатом будет “У ХЧБЦЕОЙЕН”.

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

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

Для статьи использовалась информация странички http://open-office.edusite.ru/TextProcessor/p5aa1.html .

Материал взят с сайта:

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

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

Институт стандартизации США ввел в действие систему коди- рования ASCII, в которой закреплены две таблицы кодирования: базовая и расширенная. Базовая таблица закрепляет значения ко- дов от 0 до 127, а расширенная таблица относится к символам с номерами от 128 до 255.

Базовая таблица еистемы ASCII содержит 128 кодов. Первые 32 кода базовой таблицы, начиная с нулевого, отданы производите- лям аппаратных средств. В этой области размешаются управля- ющие коды, которым не соответствуют никакие символы языков. С 32-го по 127-й код размешены коды символов английского ал- фавита, знаков препинания, арифметических действий и некото- рых вспомогательных символов.

Кодировка символов русского языка, известная как кодировка Windows-1251, была введена компанией Microsoft. Учитывая ши- рокое распространение операционных систем и других продуктов этой компании в России, она глубоко закрепилась и нашла ши- рокое распространение. Кодировка символов русского языка за- креплена в расширенной таблице кодирования системы ASCII с 192-го по 255-й код.

Большинство систем распознают 256 кодов: 128 стандартных и 128 дополнительных из расширенного набора символов.

Поскольку одному байту соответствует один символ, для пред- ставления строки из четырех символов необходимо 4 байт. Вот как выглядит, например, группа символов АI2В, состоящая из букв и цифр, в кодировке ASCII:

А вот как выглядит двоичное представление шести символов слова «binary»:

0100001∩ 01001001 01001110 ОIОООО∩1 01010010 01011001

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

Буквам верхнего и нижнего регистров соответствуют разные коды ASCII. Например, прописной букве D соответствует код 68, а строчной d - 100.

Для кодирования букв русского алфавита чаше всего на прак- тике используется кодировка Windows-1251, однако существуют и другие системы кодировки. Распространенной является коди- ровка КОИ-8 (код обмена информацией восьмизначный). Ее про- исхождение относится к временам действия Совета экономиче- ской взаимопомоши государств Восточной Европы. Сегодня ко- дировка КОИ-8 широко распространена в компьютерных сетях на территории России.

Международный стандарт, в котором предусмотрена кодиров- ка символов русского языка, называется ISO (International Standard Organization - Международный институт стандартизации). На практике данная кодировка используется редко.

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

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

Растровое кодирование позволяет использовать двоичный код для представления графических данных, поскольку линейные ко- ординаты и индивидуальные свойства каждой точки (яркость) можно выразить с помошью целых чисел. Общепринятым на се- годняшний день считается представление черно-белых иллюстра- ций в виде комбинации точек с 256 градациями серого цвета. Сле- довательно, для кодирования яркости любой точки обычно дос- таточно 8-paзpяднoгo двоичного числа.

Цветные изображения формируются и соответствии с двоич- ным кодом цвета каждой точки, хранящимся в видеопамяти. Цвет- ные изображения могут иметь различную глубину цвета, задавае- мую количеством бит для кодирования цвета точки. Так, для глу- Г>пны цвета 8 количество отображаемых цветов составляет 2 х = 256.

Кодирование цветной i рафики 16-paзpядными двоичными чис- л:iмii называется режимом High Color.

Режим представления цветной графики с использованием 24 двоичных разрядов называется полноцветным (True Color).

Для кодирования цветных графических изображений применя- сiея принцип декомпозиции произвольного цвета на основные составляющие. Считается, что любой цвет, видимый человече- ским глазом, можно получить путем механического смешивания mix трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Такая система кодирования получила название RGB (но первым буквам основных цветов).

RGB-модель представления цвета приведена в табл. 1.1.

Каждому из основных цветов можно поставить в соответствие lонолнительный цвет, т.е. цвет, дополняющий основной цвет io белого. Как следует из табл. I. I, для любого из основных цве- го| дополнительным будет цвет, образованный суммой пары ос- lалыiых основных цветов. Соответственно дополнительными цве- i^!іми являются голубой (Cyan), пурпурный (Magenta) и желтый (Yellow).

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


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

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

Качество изображения определяется разрешающей способнос- тью монитора, т.е. количеством точек в строке и строк растра. Обычно в мониторах используют разрешающую способность эк- рана 800x600, I 024x768 или I 280x960. Рассчитаем необходимый объем видеопамяти для одного из графических режимов, напри- мер разрешением I 024x768 и качеством цветопередачи 32 бит на точку. Необходимый объем видеопамяти составит:

З2хl 024x768 = 25 165 824 бит = 3 145 728 байт = 3072 Кбайт = = 3 Мбайт.

ЕВЕ (End of Blockette ) - конец вложенного блока. Сегодня этот код, разделяющий между собой элементы одной записи, назвали бы «концом поля».

EOF (End of File ) - конец сообщения (конец передачи, конец файла данных).

Схема кодирования ASCII

Первая попытка стандартизировать коды символов для ЭВМ состоялась в 1963 г. в США, когда была создана первая версия стандарта ASCII (по-русски произносится как «аски »). Система кодирования получилась не совсем удачной, вызвала множество нареканий и вскоре была подготовлена вторая, более успешная версия, принятая в 1968 г. Она используется по сей день. Название стандарта расшифровывается какAmerican Standard Code for Information Interchange - Стандартный код внут-

реннего информационного обмена США. Его ввёл в действие Национальный институт стандартиза-

ции США (ANSI, American National Standard Institute).

Таблица ASCII предназначена для семиразрядного кодирования 128 различных символов (). Этого достаточно, чтобы представить строчные и прописные буквы английского алфавита, знаки препинания, цифры, знаки математических действий, а также некоторые специальные знаки, например такие, как @, #, § и другие.

Первые 32 кода таблицы ASCII (от 0 до 31) не представляются печатными знаками. Эта область отведена для размещения специальных символов:

управляющих кодов (служат для управления удаленными устройствами, например принтерами);

кодов форматирования (служат для специального оформления сообщений);

кодов-разделителей (служат для структурирования передаваемых наборов данных).

Отечественные схемы 8-разрядного кодирования текстов

Активное внедрение национальных стандартов кодирования текстовых символов относится к 70-м годам XX века. Эти процессы затронули всю Европу. Не остался в стороне и Советский Союз: были утверждены первые национальные 8-разрядные схемы кодирования.

При 8-разрядном кодировании на запись символа отводится байт, имеющий 256 различимых состояний. Это позволяет кодировать двуязычные символьные наборы, например английский и русский. Англоязычную часть размещают в нижней части таблицы (коды от 0 до 127), а национальную часть - в верхней (коды от 128 до 255).

Схема кодирования ISO-8859

Формально для России эта схема кодирования имеет наивысший приоритет, потому что утверждена Международным институтом стандартизации (ISO -International Standard Organization ). В стандарте ISO-8859 кодированию символов кириллицы (кириллицей называют письменную систему славянских языков) выделена так называемая «пятая кодовая страница», поэтому этот стандарт именуют такжеISO 8859-5 .

Нa практике документы, использующие эту схему, встречаются редко, особенно на компьютерах платформы IBM PC . Эту кодировку чаще можно встретить в документах, выполненных на компьютерах платформыSun . Несмотря на малую распространённость, эта система кодирования имеет

краткое содержание других презентаций

«Кодирование информации в компьютере» - Двоичное кодирование текстовой информации. Кодирование информации в компьютере. Позиционные и непозиционные системы счисления. Кодирование векторных изображений. Способы кодирования. Таблица кодировки. Количество компьютеров. Римская непозиционная система счисления. Позиционные системы счисления. Один байт информации. Анекдот. Достоинство и недостаток кодирования. Таблица расширенного кода ASCII. Таблица кодировки ASCII.

«Сериализация» - Настраиваемая сериализация. Что можно сериализовать. Десериализация объектов. Экспорт объектов. Сериализация и десериализация. Применение RMI. Сериализация. Удаленные интерфейсы. Поиск удаленных объектов. Distributed garbage collecting. Банк. Реализация счета. Клиент. Вопросы. Концепции RMI. Сериализация в ручную. Автоматическая сериализация. Передача данных. Сериализация и RMI. Схема взаимодействия.

«Примеры кодирования информации» - Шифрование информации. Схема передачи информации. Приемы кодирования изображения. Примеры стенограмм. Способы кодирования информации. Таблица азбуки Морзе. Способ кодирования информации. Кодирование графической и звуковой информации. Естественный язык. Кодирование чисел. Творческое задание. Ответить на вопрос. Кодирование информации. Русский язык. Кодирование текстовой информации. Запись композитором мелодии нотами.

«Урок «Кодирование информации»» - Шифры замены. Орнамент. Шифр перестановки. Шифр Цезаря. Я знаком с шифрами замены. Зашифрованная пословица. Кодовая таблица азбуки Морзе. Топор. Представление информации. Конспект лекции. Кодирование информации. Кодовая таблица флажковой азбуки. Криптография. Способы кодирования информации. Информация.

«Помехоустойчивое кодирование» - Проверки. Введение избыточности. Предположения. Сводка результатов по линейным кодам. Свойства расстояния Хэмминга. Расстояние Хэмминга. Проверочная матрица. Добавление проверки на четность. Длина слов. Недвоичный код. Систематический код. Связь порождающей и проверочной матрицы. Примеры. Систематическое кодирование. Матрицы систематического кода. Обнаружение ошибки перестановки. Свойства расстояния.

«Кодирование видеоинформации» - Возможность использования отдельных объектов в качестве элементов интерактивного действия. Способы сжатия. Кодирование звуковой информации. Использование принципа кодирования индивидуальных объектов. Стандарт MPEG-1. Специальные программы. Стандарт MPEG-4. Взаимосвязи в рамках сюжета. Основные мультимедийные форматы. Стандарт MPEG-2. Основные идеи. Видеоинформация. Формат. Кодирование видеоинформации.



Понравилась статья? Поделиться с друзьями: