Но с помощью восьми бит можно закодировать до 256 символов — в самом деле, каждый бит может иметь значение 0 или 1, то есть одно из двух, следовательно, всего различных восьмибитовых последовательностей может быть 2*2*2*2*2*2*2*2=28=256. Английских букв — 26, их же, но заглавных — столько же, цифры и служебные символы вроде запятой, точки займут еще ну, мест 50, если по максимуму. Поэтому для возможности адаптации операционных систем к различным другим алфавитным системам (то есть, в применении к русскому языку, русификации программ[29]) в качестве строгого международного стандарта было принято строгое соответствие отображаемым символам лишь первых 127 последовательностей восьми бит — то есть первой половины кодовой страницы, а вторую половину отдали "на откуп" производителям регионального программного обеспечения и информационных ресурсов — чтобы они размещали в ней свои алфавиты.
Рис. 13.2.
Узаконенные международными стандартами коды первых 127 символов кодовых страниц, которые должны быть едиными во всех таких страницах, получили название "стандарта ASCII". Эти символы также могут кодироваться всего семью битами информации. Первые 32 кода (от 0 до 31) были назначены управляющим символам (например, символ с кодом 13 — это символ конца абзаца), остальные кодировали строчные и прописные латинские буквы, цифры, знаки препинания и математических операций. Коды второй половины этой 256-символьной кодовой страницы получили название "расширенного стандарта ASCII". Ими кодировались, как уже было сказано выше, национальные алфавиты, а также символы псевдографики, математические и некоторые другие символы. Первый бит кода символа второй половины кодовой страницы имел значение «1», в то время как для первой половины он равнялся «0». Вы можете легко отобразить на экране символ с желаемым кодом, набрав, например, в Word его код (десятичный на цифровой клавиатуре, с нулем вначале) при удерживаемой клавише Alt.
Поэтому появились различные версии кодовых страниц (различающиеся именно своей второй половиной), которым были присвоены некоторые номера для отличия их друг от друга. Чтобы пустое место в исходной английской кодовой странице не пропадало, в ней на места, соответствующие кодам символов больше 127, были поставлены гласные буквы английского алфавита с надстрочными знаками, использующимися в некоторых европейских языках вроде французского для обозначения по особому произносящихся букв, а также символы, позволяющие в текстовом режиме создавать простейшие графические изображения — символы псевдографики. В региональных кодовых страницах на этих местах стали располагать символы отличных от английского алфавитов, таких, как русский, турецкий, вьетнамский, тайский и т. д. Программы, создаваемые в неанглоязычных странах, были рассчитаны на работу с такими кодовыми страницами и, получая откуда-нибудь код символа, больший 127, отображали тот символ, который стоял под таким номером именно в их региональной кодовой странице, а не в исходной английской. Для ввода текстовой информации производились специальные наклейки на клавиатуру, а сейчас делаются и «локализованные» клавиатуры — с выгравированными на них символами национальных алфавитов. При поступлении с клавиатуры в программу, работающую с текстом, символа с кодом, большим 127, программа записывала в файл его код так, как он поступил, а вот отображала символ в соответствии с кодовой страницей.
Код такого символа передавался в программу драйвером клавиатуры, когда был включен специальный режим — "переключена раскладка". В таком режиме при нажатии какой-нибудь клавиши с символом драйвер передавал в программу не код собственно нажатой клавиши, а код, соответствующий в региональной кодовой странице тому символу, который был помещен на этой клавише при «локализации» клавиатуры, то есть гравировке или наклейке на ее кнопки символов неанглийского алфавита.
Иными словами, кодовая страница — это как бы «закон» для программы, работающей с вводом-выводом текстовой информации, регламентирующий, как должно интерпретировать и выводить на экран или печать последовательность бит, являющуюся записью текста, а также как должно воспринимать ввод данных с клавиатуры. В разных странах существуют разные законы, но первые части у всех законов общие, а поэтому одинаковые.
Российская особенность
В большинстве стран была создана одна кодовая страница для своего алфавита. Но в России были некоторые особенности.