Стандарт Unicode для кодировки символов был предложен некоммерческой организацией Unicode Consortium. Для представления каждого символа в этом стандарте используются два байта, что позволяет закодировать очень большое число символов из разных письменностей. В документах Unicode могут соседствовать русские, латинские, греческие буквы, китайские иероглифы и математические символы. Кодовые страницы при использовании Unicode становятся ненужными.
Коды в Unicode разделены на несколько областей. Область с кодами от 0000 до 007F содержит символы набора Latin 1 (младшие байты соответствуют кодировке ISO 8859-1). Далее идут области, в которых расположены знаки различных письменностей, а также знаки пунктуации и технические символы; часть кодов зарезервирована для использования в будущем. Символам кириллицы выделены коды в диапазоне от 0400 до 0451.
Для работы с документами Unicode нужны соответствующие шрифты. Как правило, файл шрифта Unicode содержит начертания не для всех символов, определенных в стандарте, а лишь для символов из некоторых областей.
Кодировка формата Unicode. Unicode - это универсальная международная кодировка, которая предусматривает выделение для набора символов каждого языка определенной непрерывной последовательности двоичных чисел. Символы Unicode хранятся в виде 16-разрядных чисел, что позволяет представить свыше 60 тысяч различных символов, но на каждый символ расходуется два байта памяти. Набор символов латинского алфавита (то есть символов английского языка) и математические символы считаются в Unicode основными и размещаются в диапазоне 0020h-007Eh. Преобразование латинских символов из формата Unicode в ASCII-код сводится к простому отсечению старшего байта символа. Символы русского языка (Cyrillic) размещаются в диапазоне 0410h-044Fh.
Рис. 1. Кодировка латинских и математических символов в формате Unicode.
Рис. 2. Представление символов русского алфавита в формате Unicode.
Ядро Windows NT, ее графический интерфейс (GDI) и файловая система NTFS уже были реализованы с использованием Unicode. Программы, запущенные в среде Windows NT, могли работать также с однобайтовыми символами, кодировка которых в этом случае соответствует установленной по умолчанию кодовой странице ANSI (для России - Windows Cyrillic, или СР 1251). Перед вызовом некоторых функций программного интерфейса Windows NT программы, работающие с кодовой страницей ANSI, преобразуют однобайтовые символы в Unicode. Чтобы преобразование выполнялось без ошибок, пользователь должен правильно указать страну в приложении Regional Settings.
В отличие от Windows NT, ядро и графический интерфейс более «старой» Windows 95 не используют Unicode, а работают с кодовыми страницами. Однако в этой операционной системе предусмотрена возможность динамического изменения наборов символов и раскладок клавиатуры, что позволяет создавать документы, содержащие одновременно символы из разных наборов. В составе Windows 95 поставлялся набор шрифтов Unicode, с которыми, в частности, могли работать программы Microsoft Office 97.
Выяснить, какие наборы символов присутствуют в том или ином шрифте Unicode, можно с помощью стандартной утилиты Character Map (таблица символов), включенной еще в состав Windows NT (аналогичная программа из Windows 95 не подходит). Запустите ее и выберите в списке Font шрифт Arial, а в списке Subset - набор символов Windows Characters. Получившаяся таблица будет повторять кодовую страницу ANSI с символами западноевропейской латиницы. Выбрав же в списке Subset строку Cyrillic, вы увидите таблицу с символами кириллицы и без символов латиницы, соответствующую кириллической области Unicode.
Использование Unicode значительно упрощает создание многоязычных приложений. Поэтому, создавая программы с прицелом на этот стандарт, вы закладываете неплохую базу для локализации своего программного продукта.