Чтение онлайн

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №3
Шрифт:

Каждая последовательность восьми бит имеет также и свое числовое значение — это ведь фактически число в двоичной системе счисления, которое нетрудно перевести в десятичную. Например, 01010101 в двоичной системе счисления — это 85 в десятичной, а в соответствии с международными стандартами эта последовательность бит кодирует символ "U". Число 85 в данном случае называется кодом символа "U". То есть можно сказать, что при отображении текстовых данных программа, отображающая их, каждую последовательности восьми бит воспринимает как число — код символа, смотрит в таблице символов, кодом какого символа это число является и отображает именно этот символ. Таблицу символов можно отобразить визуально — например, в Windows этой цели служит программа "Таблица символов." При таком отображении символы расставляются по возрастанию их кодов.

Но с помощью восьми бит можно закодировать до 256 символов — в самом деле, каждый бит может иметь значение 0 или 1, то есть одно из

двух, следовательно, всего различных восьмибитовых последовательностей может быть 2*2*2*2*2*2*2*2 = 28 = 256. Английских букв — 26, их же, но заглавных — столько же, цифры и служебные символы вроде запятой, точки займут еще ну, мест 50, если по максимуму. Поэтому для возможности адаптации операционных систем к различным другим алфавитным системам (то есть, в применении к русскому языку, русификации программ[28]) в качестве строгого международного стандарта было принято строгое соответствие отображаемым символам лишь первых 127 последовательностей восьми бит — то есть первой половины кодовой страницы, а вторую половину отдали "на откуп" производителям регионального программного обеспечения и информационных ресурсов — чтобы они размещали в ней свои алфавиты.

Рис. 13.2. Визуальное отображение кодовой страницы — программа "Таблица символов"

Узаконенные международными стандартами коды первых 127 символов кодовых страниц, которые должны быть едиными во всех таких страницах, получили название "стандарта ASCII". Эти символы также могут кодироваться всего семью битами информации. Первые 32 кода (от 0 до 31) были назначены управляющим символам (например, символ с кодом 13 — это символ конца абзаца), остальные кодировали строчные и прописные латинские буквы, цифры, знаки препинания и математических операций. Коды второй половины этой 256-символьной кодовой страницы получили название "расширенного стандарта ASCII". Ими кодировались, как уже было сказано выше, национальные алфавиты, а также символы псевдографики, математические и некоторые другие символы. Первый бит кода символа второй половины кодовой страницы имел значение "1", в то время как для первой половины он равнялся "0". Вы можете легко отобразить на экране символ с желаемым кодом, набрав, например, в Word его код (десятичный на цифровой клавиатуре, с нулем вначале) при удерживаемой клавише Alt.

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

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

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

Российская особенность

В

большинстве стран была создана одна кодовая страница для своего алфавита. Но в России были некоторые особенности.

Изначальные английские версии поставляемых в Россию программ не могли работать с русским алфавитом (это и ясно — в них же не было русской кодовой страницы). Поэтому была создана русская кодовая страница ISO-8859-5, в которой кодам символов, большим 127, соответствовали русские буквы. Так как их всего 33, ас заглавными — 66, то в кодовой странице осталось место для символов псевдографики. Для того, чтобы с этой кодовой страницей можно было работать, имелось три возможности: писать программы, отображающие символы именно в соответствии с ней; создать операционную систему, которая сама будет "заведовать" вводом и выводом текста в соответствии с нужной кодовой страницей, а программы будут лишь использовать готовый результат; создать специальную программу, которая будет работать вместе с операционной системой и обрабатывать ввод и вывод текстовой информации в соответствии с нужной кодовой страницей. Первая возможность из-за своей сложности использовалась мало, третья подразумевала создание и использование специальных программ — русификаторов, которые долгое время использовались, при использовании второй возможности была необходима русификация или локализация операционной системы — то есть внедрение в нее функций отображения символов в соответствии с заданной кодовой страницей. В настоящее время повсеместно применяются локализованные операционные системы, то есть те, в которых кроме внедрения функций работы с русской кодовой страницей еще и переведен интерфейс.

Вариантов русской кодовой страницы было два. Один, вышеупомянутый — ISO-8859-5. Другой, так называемый "альтернативный", отличался от него другим порядком следования русских букв до строчной "р" и имел ту особенность, что символы псевдографики кодировались в нем теми же кодами, что и в исходной английской таблице символов, а следовательно, при принятом в операционной системе этом варианте кодовой страницы можно было использовать нелокализованные версии западных программ, работающих с псевдографикой. Например, западная программа могла из символов псевдографики изобразить таблицу. Она считывала из файла код символа и отображала на экране соответствующий ему значок. Если в системе была установлена "альтернативная" кодовая страница, то это оказывался именно символ псевдографики и рисунок получался. Если же в системе стояла ISO-8859-5, то рисовалась русская буква, и внешний вид рисунка был весьма своеобразным. Поэтому несмотря на то, что в "альтернативной" кодовой странице русские символы шли не подряд, а с разрывом между строчными буквами "п" и "р", именно она впоследствии получила наибольшее распространение. Кодовая страница ISO-8859-5 применялась при русификации компьютерных систем Sun, поставлявшихся в Россию.

Заслуга внедрения русских кодовых страниц принадлежит российской компании "Диалог" и ее ведущему программисту Петру Квитеку. В 1989 году в этой фирме — партнере Microsoft была локализована MS-DOS 4.1, первой среди всех операционных систем. При ее создании в качестве основной кодовой страницы была взята "альтернативная" кодировка, названная Dos(866), — именно из-за того, что программы, использующие ее, корректно отображали символы псевдографики. Это при вело к еще более широкому распространению данной кодовой страницы, так как MS-DOS была основной операционной системой для персональных компьютеров.

При создании локализованной версии операционной системы Windows фирма Microsoft решила изменить ставшую общепринятой русскую кодовую страницу Dos(866). В частности, с появлением графического интерфейса отпала необходимость в использовании символов псевдографики, что позволило сделать порядок символов русского алфавита в кодовой странице в соответствии с алфавитной последовательностью, а также разместить в ней различные специальные символы вроде изображения торговой марки — ™. Появилась кодировка Windows-1251, которую создал тот же Петр Квитек. В ней тем символам, что в кодировке Dos (866) соответствовали одни русские буквы, были поставлены в соответствие другие символы. В результате для чтения в Windows русского текста, набранного в Dos, стали требоваться программы-перекодировщики.

Шрифты

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

Поделиться:
Популярные книги

Наследник Четырех

Вяч Павел
5. Игра топа
Фантастика:
героическая фантастика
рпг
6.75
рейтинг книги
Наследник Четырех

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Лорд Системы 4

Токсик Саша
4. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 4

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

6 Секретов мисс Недотроги

Суббота Светлана
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
6 Секретов мисс Недотроги

Неудержимый. Книга XIII

Боярский Андрей
13. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIII

Вернуть невесту. Ловушка для попаданки

Ардова Алиса
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Вернуть невесту. Ловушка для попаданки

На руинах Мальрока

Каменистый Артем
2. Девятый
Фантастика:
боевая фантастика
9.02
рейтинг книги
На руинах Мальрока

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Табу на вожделение. Мечта профессора

Сладкова Людмила Викторовна
4. Яд первой любви
Любовные романы:
современные любовные романы
5.58
рейтинг книги
Табу на вожделение. Мечта профессора