НАИМЕНОВАНИЕ¶
Unicode -
унифицированное
16-битное
надмножество
символов
ОПИСАНИЕ¶
Международный
стандарт
ISO 10646
описывает
Универсальный
Набор
Символов
Universal
Character Set (UCS).
UCS
содержит все
символы всех
остальных
стандартных
наборов
символов.
Также он
гарантирует
полную
совместимость,
т. е. для
любой другой
кодировки
можно
построить
таблицы
преобразования
так, что при
преобразовании
из этой
кодировки в
UCS и обратно
информация
не будет
потеряна.
UCS содержит
символы,
требуемые
для
представления
практически
всех
известных
языков. Сюда
входит
множество
языков,
которые
используют
расширения
латиницы, а
также
следующие
начертания и
языки:
греческий,
кириллический,
иврит,
арабский,
армянский,
грузинский,
японский,
китайский,
хирагана,
катакана,
корейский, Hangul,
деванагари,
бенгальский,
Gurmukhi, Gujarati, Oriya,
тамильский,
телугу, Kannada, Malayam,
тайский,
лаосский, Bopomofo, и
множество
других. Идет
работа по
включению
тибетской,
кхмерской,
рунической и
эфиопской
письменности,
иероглифов,
различных
индо-европейских
языков, а
также многих
других. Для
большинства
последних на
момент
публикации
стандарта (в
1993-м году) не
было до
конца
известно,
как лучше
всего
закодировать
их. В
дополнение к
символам,
которые
требуются
для этих
языков,
также
присутствует
множество
графических,
типографских,
математических
и научных
символов,
типа тех, что
используются
в TeX, PostScript, MS-DOS, Macintosh, Videotext, OCR, а
также
множестве
текстовых
процессоров.
Кроме того, в UCS
включены
специальные
коды,
гарантирующие
полную
совместимость
со всеми
существующими
наборами
символов.
Стандарт
UCS (ISO 10646)
описывает
архитектуру
31-битного
набора
символов.
Однако в
настоящее
время
символы
присвоены
только
первым 65534
позициям (от
0x0000 до 0xfffd),
которые
называются
Базовый
Мульти-языковый
План (BMP).
Ожидается,
что только
очень
экзотические
символы
(типа
иероглифов),
предназначенные
для
специальных
научных
исследований,
получат
"прописку"
за пределами
этого
16-битного BMP.
Символы
UCS с
кодами от 0x0000
до 0x007f
идентичны
классическому
набору
символов
US-ASCII,
а символы в
диапазоне
кодов от 0x0000 до
0x00ff идентичны
набору
символов
ISO 8859-1
Latin-1.
КОМБИНИРУЮЩИЕ
СИМВОЛЫ¶
Некоторые
коды в
UCS были
назначены
комбинирующим
символам.
Такие
символы
похожи на
ударения в
полиграфии,
которые не
изменяют
размер своей
буквы.
Комбинирующие
символы
просто
добавляют
акцент
предыдущему
символу.
Большинство
важных
акцентирующих
символов
имеют свои
собственные
коды в
UCS,
тогда как
механизм
комбинирующих
символов
позволяет
добавлять
ударения и
другие
диакритические
отметки к
любому
символу.
Комбинирующие
символы
всегда
следуют за
символом,
который они
модифицируют.
Например,
немецкий
символ
Умляут-А
("Латинская
большая
буква A с
тремой")
может быть
представлен
предварительно
скомпонованным
(код
UCS 0x00c4), или
как
комбинация
обычного
символа
"Латинская
большая
буква А" и
символа
"комбинирующая
трема": 0x0041 0x0308.
УРОВНИ
РЕАЛИЗАЦИИ¶
Так как не
предполагается,
что все
системы
поддержат
такие
продвинутые
механизмы,
как
комбинирование
символов, ISO 10646
определяет
следующие
три уровня
реализации
UCS:
- Уровень 1
- Комбинированные
символы и
символы Hangul Jamo
(особая,
усложненная
кодировка
корейской
рукописи,
где слоги Hangul
кодируются
двумя или
тремя
подсимволами)
не
поддерживается.
- Уровень 2
- Как
уровень 1,
однако
теперь в
некоторых
языках
(таких как
иврит,
арабский,
деванагари,
бенгальский,
Gurmukhi, Gujarati, Oriya,
тамильский,
телугу, Kannada, Malayalam,
тайский и
лаосский)
допускаются
некоторые
комбинированные
символы.
- Уровень 3
- Поддержка
всех
символов UCS.
Стандарт Unicode 1.1,
опубликованный
Консорциумом
Unicode, описывает
UCS Basic Multilingual Plane на
третьем
уровне
реализации,
как сказано
в стандарте ISO
10646. Также Unicode 1.1
добавляет
некоторые
семантические
определения
для
некоторых
символов к
определениям
из стандарта
ISO 10646.
РЕАЛИЗАЦИЯ
UNICODE В LINUX¶
В Linux на данный
момент
реализован
только 1-й
уровень
BMP. с
целью
избежать
сложностей
реализации
комбинирующих
символов.
Более
высокие
уровни
подходят для
специфических
форматов
обработки
текста, но не
как
общесистемный
набор
символов.
Переменные
языка "C" типа
wchar_t содержат
32-битное
целое со
знаком,
которое
интерпретируется
как коды
UCS4.
Настройки
локализации
указывают,
какая
кодировка
является
системной,
например
UTF-8
или
ISO 8859-1.
Библиотечные
функции
wctomb,
mbtowc, или
wprintf
могут
использоваться
для
преобразования
символов и
строк типа
wchar_t, которые
используются
в программе,
в системную
кодировку
или обратно.
ПРИВАТНАЯ
ОБЛАСТЬ¶
В
BMP в
диапазоне
кодов от 0xe000 до
0xf8ff никогда не
будет
назначен ни
один символ,
так как эта
область
зарезервирована
стандартом
для
использования
в любых
целях. В
сообществе Linux
этот
диапазон был
поделен еще
раз, причем
поддиапазон
от 0xe000 до 0xefff
может
использоваться
в своих
личных
целях, а
использование
диапазона от
0xf000 до 0xf8ff
координируется
большинством
пользователей
Linux.
Регистрацией
символов,
назначенных
для Linux-зоны, в
данный
момент
занимается Peter
Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. В
данный
момент Linux-зона
содержит
некоторые
графические
символы из DEC VT100,
отсутствующие
в Unicode,
предоставляет
прямой
доступ к
символам в
буфере
шрифтов
консоли и
содержит
символы,
используемые
некоторыми
продвинутыми
языками типа
клингонского.
ЛИТЕРАТУРА¶
- *
- Information technology - Universal Multiple-Octet Coded
Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO 10646-1, International Organization for
Standardization, Geneva, 1993.
Это
официальная
спецификация
стандарта
UCS. Довольно
официальная,
довольно
толстая и
довольно
дорогая.
Если вы
хотите
купить ее,
смотрите на
http://www.iso.ch.
- *
- The Unicode Standard - Worldwide Character Encoding Version
1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991.
В данный
момент
доступна
версия Unicode 1.1.4.
Изменения
относительно
версии 1.0
доступны с
ftp://ftp.unicode.org. Unicode 2.0 будет
опубликован
в печатном
виде в 1996-м
году.
- *
- S. Harbison, G. Steele. C - A Reference Manual. Fourth
edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Хорошее
справочное
руководство
по языку
программирования
C. Четвертая
редакция
содержит, в
том числе,
Первую
Поправку
1994-го года к
стандарту ISO C
(ISO/IEC 9899:1990), которая
добавляет в
библиотеку
С множество
новых
функций для
поддержки
многобайтных
наборов
символов.
ОШИБКИ¶
Во время
написания
этого
руководства
поддержка
UCS
в библиотеке
libc ОС Linux была
далека от
завершения.
АВТОР¶
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
СМОТРИ
ТАКЖЕ¶
utf-8(7)
ПЕРЕВОД¶
Перевел с
английского
Алексей
Миллер <asm@asm.kiev.ua> 2000