ASCII и UNICODE
Во время создания большинства операционных систем никто не позаботился предусмотреть возможность представления информации в программах на других языках, отличных от английского. Поэтому наиболее популярной кодировкой была (и фактически ей и остается) ASCII (Американский Стандартный Код для Информационного Обмена).
ASCII пришёл на смену 5- и 6-битным кодировкам. Для кодирования национальных символов предусматривалось переключение режима с помощью символов SO (Shift Out) и SI (Shift In) — это использовалось в КОИ-7. На практике удобнее оказалось использовать 8-битные кодировки, где нижнюю половину кодовой таблицы (0—127) занимают символы ASCII, а верхнюю (128—255) — разные другие нужные символы.
Стандарт ASCII (или ASCII с 7-ми битами) включает в себя 128 уникальных символов. Они подразделяются на символы, которые ASCII определяет как собственно печатаемые символы, и на так называемые символы управления, которые имели специальные значения в старых протоколах связи. Каждому элементу набора соответствует целочисленный символьный код (0-127). Подмножество печатаемых символов представляют те, которые находят на клавиатуре пишущей машинки, с некоторыми добавлениями. Каждый символ занимал 7 младших значимых битов байта, тогда как старший разряд использовался для целей управления (то есть для управления передачи в старых пакетах связи).
Концепция ASCII с 7 битами была расширена до ASCII с 8 битами (или расширенный ASCII). В этой кодировке диапазон символов соответствует кодам от 0 до 255. Младшие биты (0-127) -- чистый ASCII, в то время как старший разряд добавляет еще 127 символов. Так как эта кодировка обратно совместима с ASCII (символ все еще занимает 8 бит и коды полностью соответствуют старому ASCII), эта кодировка стала широко использоваться.
Стандарт ASCII с 8 битами не определяет содержание верхней половины таблицы кодировки. Поэтому МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ (ISO) взяла ответственность по определению семейства стандартов, известных как семейство ISO 8859-X. Это семейство представляет собой совокупность 8-ми битных кодировок, где младшая половина каждой кодировки (символы с кодами 0-127) соответствует ASCII, а старшая половина определяет символы для различных языков. Например, следующие кодовые страницы определены для:
8859-0 -- Новый европейский стандарт (так называемый Latin 0)
8859-1 -- Европа, Латинская Америка (также известный как Latin 1)
8859-2 -- Восточная Европа
8859-5 -- Кириллица
8859-8 -- Идиш
В Latin 1 старшая половина таблицы определяет различные символы, которые не являются частью английского алфавита, но присутствует в различных европейских языках (немецкие umlauts, французские диакритические знаки и т.д.).
Другая популярная реализация расширенного ASCII -- это так называемая кодовая страница IBM (названная по имени компьютерной компании, которая создала эту кодировку для своих персональных компьютеров). Эта кодировка в старшей половине содержит псевдографические символы.
Программное обеспечение, которое не делает никаких предположений о символах, использующих 8-й бит ASCII-данных (то есть не использует их для каких-то своих внутренних нужд) называется чисто 8-ми битными (примером не чисто 8-ми битного программного обеспечения является использование в фидо буквы Н в качестве управляющего символа). Некоторые более старые программы, разработанные для ASCII с 7 битами в памяти, а не для чистых 8-ми бит, могут работать неправильно с данными в расширенном коде ASCII. Большинство программ, однако, способны работать с расширенным ASCII по умолчанию или для этого требуется простая переконфигурация.
Так как в большинстве систем символы описываются 8-ю битами, то нет никакого способа расширить ASCII еще больше. Способ создания новых символов в ASCII -- это просто создание других расширенных ASCII реализаций. Именно так кириллица и была введена в ASCII.
Также существуют и другие стандарты, которые отличны от ASCII и гораздо более адаптируемы. Наиболее известный из них -- это Unicode. Этот стандарт пока не прижился, но уже сейчас появляется все больше и больше программного обеспечения, которое имеет поддержку Unicode.
Юникод (Unicode, (редк.) уникод, универсальная система кодирования) — стандарт кодировки знаков, позволяющий представить знаки практически всех письменных языков. Юникод имеет несколько форм представления, включая UTF-7, UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). В Microsoft Windows NT и основанных на ней системах Windows 2000 и Windows XP поддерживается форма UTF-16. В UNIX-подобных операционных системах GNU/Linux, BSD и Mac OS X поддерживается форма UTF-8.
Стандарт предложен в 1991 году некоммерческой организацией «Unicode Consortium». Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита и кириллицы, при это становятся ненужными кодовые страницы.
По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы — а эта работа ведётся постоянно, поскольку изначально система Юникод была представлена в ISO в недоработанном виде — выходят и новые документы ISO. Система Юникод существует в общей сложности в следующих версиях:
1.1 (соответствует стандарту ISO/IEC 10646-1: 1993),
2.0, 2.1 (тот же стандарт ISO/IEC 10646-1: 1993 плюс дополнения: "Amendments" с 1-го по 7-е и "Technical Corrigenda" 1 и 2),
3.0 (стандарт ISO/IEC 10646-1:2000).
3.2 (стандарт 2002 года)
4.0 (стандарт 2003)
4.01 (стандарт 2004)
Последнее значительное изменение -- введение символа валюты EURO -- произошло в сентябре 1998 г.
UNICODE -- частичная реализация стандарта ISO 10646, совместим снизу вверх, т.е. первые 256 символов UNICODE = Latin-1 (ISO 8859-1). В настоящее время распределено около 40.000 позиций из возможных 65.535 (2 байта на букву), и им соответственно присвоены стандартные имена. Позиции зарезервированы за буквами практически всех известных алфавитов, включая древнеегипетские иероглифы -- то есть, используя этот стандарт, можно писать одновременно на русском и греческом, делая вставки на японском, с использованием одного-единственного шрифта.
Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Часть кодов зарезервирована для использования в будущем. Под символы кириллицы выделены коды от U+0400 до U+052F.
Позиции, под которые по стандарту надо отводить по 4 байта -- то есть 2147418112 символов -- пока не заняты.
|