О кодировках символов в компьютере Учитель информатики Троицкой СОШ Еремин О.Ф.

Презентация:



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

двоичное кодирование текстовой информации ; таблицы кодировки ; понятие кодировки Unicode; научиться определять числовые коды символов ; научиться вводить.
Кодирование текстовой информации. В традиционных кодировках для кодирования одного символа используется 8 бит. Легко подсчитать, что такой 8-разрядный.
Двоичное кодирование текстовой информации Информация и информационные процессы.
Двоичное кодирование текстовой информации Информация и информационные процессы Скачать конспект к данной презентации Qo.do.aM - >>>мир предметника
Двоичное кодирование текстовой информации. Текст – последовательность символов компьютерного алфавита. Текстовая информация – это информация, выраженная.
Двоичное кодирование текстовой информации Содержание 1.Как представляется текст в памяти компьютера.Как представляется текст в памяти компьютера. 2.КодКод.
Двоичное кодирование текстовой информации Информация и информационные процессы.
1 Двоичное кодирование символьной информации
Двоичное кодирование текстовой информации Начиная с 60-х годов, компьютеры все больше стали использовать для обработки текстовой информации и в настоящее.
Начиная с 60-х годов, компьютеры все больше стали использовать для обработки текстовой информации и в настоящее время большая часть ПК в мире занято обработкой.
Кодировка HTML Подготовил: Леонтьев С.В. Кодировка ASCII ASCII расшифровывается как Американский Стандартный Код для Обмена информацией (American Standard.
КОДИРОВАНИЕТЕКСТАКОДИРОВАНИЕТЕКСТАКОДИРОВАНИЕТЕКСТАКОДИРОВАНИЕТЕКСТА.
Кодирование текстовой информации Создание документов в текстовых редакторах Ввод и редактирование документа.
Кодирование текстовой информации. Начиная с 60-х годов, компьютеры все больше стали использовать для обработки текстовой информации и в настоящее время.
Кодирование текстовой информации © Кошля Л.Н. учитель информатики.
Кодирование текстовой информации. Двоичное кодирование текстовой информации в компьютере Информация, выраженная с помощью естественных и формальных языков.
Московский Гуманитарный Университет. Тема доклада: «Стандарты кодов символов в Информационных Системах. Использование оригинальных шрифтов в ИС». Подготовила:
Кодирование и обработка информации 10 класс.
Кодирование тестовой информации. Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовой информации и в настоящее.
Транксрипт:

О кодировках символов в компьютере Учитель информатики Троицкой СОШ Еремин О.Ф.

Национальные кодировки Определения Начнем с определения понятий. Современные компьютеры хранят всю информацию в виде двоичных байтов, т. е. 8-битовых единиц, способных принимать значение от 0 до 255. Для того, чтобы сохранить в памяти компьютера не числовую, а текстовую информацию, мы должны определить, каким байтом или байтами будет кодироваться каждый символ, который может встретиться в нашем тексте. Такое соответствие между символами и кодирующими их байтами и называется кодировкой символов (character set). Нетрудно понять, во-первых, что каждая кодировка разрабатывается для конкретного человеческого языка (точнее, для конкретной письменности), и, во-вторых, что для любого языка таких кодировок можно придумать сколько угодно. Зная человеческую натуру, нетрудно догадаться и о том, что придумают их гораздо больше, чем нужно. Естественно, так и случилось: наиболее развитая на сегодня библиотека функций перекодировки ICU (International Components for Unicode) корпорации IBM поддерживает более 170 различных кодировок.ICU

Кодировки латиницы Рассмотрим подробнее кодировки тех письменностей, с которыми чаще всего сталкивается российский разработчик, т. е. латиницы и кириллицы. Для латиницы на сегодня используются две основные кодировки: ASCII и EBCDIC. ASCII (American Standard Code for Information Interchange) это семи битная кодовая таблица (коды символов F или десятичные), ставшая стандартом для малых и средних компьютеров, а потому и стандартом для Веба. В ней байты с шестнадцатеричными кодами 00 1F и 7F используются для кодирования управляющих (неотображаемых) символов, а остальные кодируют следующие символы:

ASCII

Кодировки кириллицы Кодировки «нелатинских» алфавитных письменностей устроены следующим образом. Они кодируются восьмибитовой таблицей (1 байт = 1 символ), т. е. числами 00 - FF ( десятичные) так, что младшая половина кодовой таблицы (коды F или десятичные) совпадает с ASCII, а старшая половина (коды 80 - FF или десятичные) содержит национальную кодировку, т. е. русские буквы в русских кодовых таблицах, турецкие в турецких и т. д. Такая организация национальных кодовых таблиц позволяет правильно отображать и обрабатывать латинские буквы, цифры и знаки препинания на любом компьютере, независимо от его системных настроек. Именно так, в частности, устроены и русские кодовые таблицы, так что мы можем в дальнейшем рассматривать только старшую их половину.

История русских кодировок это пример неразберихи, редкостной даже для нашей компьютерной действительности. Советские стандартизирующие организации принимали ГОСТы, производители компьютеров (Apple) и операционных систем (Microsoft) их дружно игнорировали и вводили собственные кодировки. В результате мы получили наследство из четырех разных ГОСТов, две кодировки от Microsoft (для DOS и для Windows) и кодировку от Apple для Mac'ов (все, естественно, несовместимые между собой). Интересующиеся подробностями могут обратиться к странице The Cyrillic Charset Soup.The Cyrillic Charset Soup К счастью, сегодня нет нужды подробно описывать все эти кодировки, поскольку в Рунете выжили только две из них. Первая это КОИ8-Р (КОИ означает Код для Обмена и обработки Информации, Р отличает русскую кодовую таблицу от украинской, КОИ8-У). КОИ8-Р была зарегистрирована Андреем Черновым из Релкома в качестве RFC 1489 и имеет вид:RFC 1489

КОИ8-Р

КОИ8-Р является стандартом de facto для всех служб Интернета, кроме WWW. В частности, все службы электронной почты и новостей Рунета работают в этой кодировке. Что касается Веба, то здесь ситуация сложнее. Дело в том, что более 90% клиентских компьютеров Сети работает под управлением Windows разных версий. Windows использует собственную кодировку русских букв, которую принято назвать по номеру кодовой страницы Windows-1251 или CP1251: Поскольку текстовые редакторы и средства разработки HTML-страниц в Windows работают в этой кодировке, абсолютное большинство Веб-документов Рунета хранится в кодировке Windows-1251.

Windows-1251

Двухбайтовые кодировки Не следует думать, что все национальные кодировки являются байтовыми, т. е. следуют правилу: 1 символ = 1 байт. На самом деле, это справедливо только для алфавитных (буквенно-звуковых) систем письменности. С другой стороны, существуют силлабические системы письма, в которых каждый символ представляет не звук, а слог, например, индийские и дальневосточные слоговые азбуки. Поскольку слогов в языке намного больше, чем отдельных звуков, старших 128 байтов кодовой таблицы просто недостаточно для их представления. Это приводит к тому, что такие письменности используют двухбайтовые кодировки (DBCS, Double Byte Character Sets). Типичным примером такой кодировки является японская кодировка JIS, существующая в нескольких вариантах. Она охватывает латинские буквы и цифры, обе японские слоговые азбуки (катакану и хирагану) и важнейшие из китайских иероглифов.

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

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

Поскольку символы разных языков представляются одними и теми же значениями от 0 до 255, то для правильной их визуализации исполняющая система должна знать не только код символа, но и название кодовой таблицы. При этом, несмотря на все усилия стандартизаторов, разнобой в названии кодировок полный (например, ASCII может называться ANSI_X , ANSI_X , cp367, csASCII, IBM367, iso-ir-6, ISO646-US, ISO_646.irv:1991, ascii, us, us-ascii, us-ascii-1968, x-ansi; синонимы для других кодировок см. в WDH: Стандартные кодировки символов).WDH: Стандартные кодировки символов

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

UNICODE - частичная реализация стандарта ISO 10646, совместим снизу вверх, т.е. первые 256 символов UNICODE = Latin-1 (ISO ). FYI: В настоящее время распределено около позиций из возможных. Действующей версией стандарта является Unicode 3.1, принятый в мае 2001 г. Все подробности можно найти на официальном сайте

Стандарт Unicode История стандарта Стандарт Unicode или ISO/IEC явился результатом сотрудничества Международной организации по стандартизации (ISO) с ведущими производителями компьютеров и программного обеспечения. Причины, изложенные на предыдущей странице, привели их к принципиально новой постановке вопроса: зачем тратить усилия на развитие отдельных кодовых таблиц, если можно создать единую таблицу для всех национальных языков? Такая задача кажется излишне амбициозной, но только на первый взгляд. Дело в том, что из 6700 живых языков официальными языками государств являются около полусотни, причем пользуются они примерно 25 различными письменностями: числа для нашего компьютерного века вполне обозримые.

Предварительная прикидка показала, что для кодирования всех этих письменностей достаточно 16-битового диапазона, т. е. диапазона от 0000 до FFFF. Каждой письменности был выделен свой блок в этом диапазоне, который постепенно заполнялся кодами символов этой письменности. На сегодня кодирование всех живых официальных письменностей можно считать завершенным. Отработанная методика анализа и описания систем письма позволила консорциуму Unicode перейти в последнее время к кодированию остальных письменностей Земли, которые представляют какой-либо интерес: это письменности мертвых языков, выпавшие из современного обихода китайские иероглифы, искусственно созданные алфавиты и т. п. Для представления всего этого богатства 16-битового кодирования уже недостаточно, и сегодня Unicode использует 21-битовое пространство кодов ( FFFF), которое разбито на 16 зон, названных плоскостями.

Общее описание В основе Unicode лежит понятие символа (character). Символ это абстрактное понятие, которое существует в конкретной письменности и реализуется через свои изображения (графемы). Это означает, что каждый символ задается уникальным кодом и принадлежит к конкретному блоку Unicode. Например, графема А есть и в английском, и в русском, и в греческом алфавитах. Однако, в Unicode ей соответствуют три разных символа «латинская прописная буква А» (код 0041), «кириллическая прописная буква А» (код 0410) и «греческая прописная буква АЛЬФА» (код 0391). Если мы теперь применим к этим символам преобразование в строчную букву, то соответственно получим «латинскую строчную букву А» (код 0061, графема a), «кириллическую строчную букву А» (код 0430, графема а) и «греческую строчную букву АЛЬФА» (код 03B1, графема α), т. е. разные графемы.

Может возникнуть вопрос: что такое преобразование в строчную букву? Здесь мы подходим к самому интересному и важному моменту в стандарте. Дело в том, что Unicode это не просто кодовая таблица. Концепция абстрактного символа позволила создателям Unicode построить базу данных символов, в которой каждый символ описывается своим уникальным кодом (ключом базы данных), полным названием и набором свойств. Например, символ с кодом 0410 описан в этой базе так: 0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; Расшифруем эту запись. Она означает, что код 0410 присвоен «кириллической прописной букве А» (полное название символа), которая имеет следующие свойства:

Общая категориястрочная буква (Lu = Letter, uppercase) Класс сочетаний 0 Направление выводаслева направо (L) Декомпозиция символанет Десятичная цифранет Цифранет Числовое значениенет Зеркальный символотсутствует (N) Полное название в Unicode 1.0 то же Комментарийнет Отображение в прописную буквунет Отображение в строчную букву 0430 Отображение в титульную буквунет

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

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

Операционные системы должны поддерживать трансформационные форматы Unicode на уровне ввода, хранения и отображения текстовых строк. Необходимы «умные» драйверы клавиатур, позволяющие нам вводить символы любого блока Unicode и передающие их коды операционной системе. Текстовые редакторы должны поддерживать отображение всех символов Unicode и выполнять над ними общепринятый набор символьных операций. То же самое должно правильно выполняться СУБД в отношении текстовых и memo-полей. Поскольку национальные кодировки еще долгое время будут сосуществовать с Unicode, необходима поддержка преобразований текста между ними.

С сожалением приходится признать, что за десять лет (Unicode 1.0 появился в 1991 г.) в этом направлении сделано гораздо меньше, чем хотелось бы. Даже Windows, содержащая на системном уровне наиболее последовательную поддержку Unicode, полна абсолютно иррациональных ограничений, объясняемых только ее историческим развитием. В Unix ситуация еще хуже, поскольку здесь поддержка Unicode перенесена из ядра на конкретные приложения. Можно утверждать, что на сегодня наиболее серьезно Unicode поддерживается в двух средах: веб-браузерах и виртуальных Java-машинах. Это не удивительно, поскольку обе среды изначально создавались как системно-независимые.

Следует отметить и объективные трудности поддержки Unicode. Для примера остановимся только на отображении графем, для которого нужно установить в системе соответствующие шрифты. Проблема в том, что шрифт, содержащий все графемы Unicode будет иметь совершенно несуразный размер. Например, TrueType-шрифт Arial Unicode MS, содержащий большую порцию символов Unicode, «весит» 24Мб. По мере наполнения Unicode новыми блоками размер таких шрифтов приблизится к 100Мб. Выходом из положения может послужить предложенная Microsoft загрузка символов по требованию, принятая в их браузере Internet Explorer. Однако, пока стандарты о правилах формирования Unicode-шрифтов молчат.

Использованные источники: Презентация создана на основе работы Юрий Лукач