unicode(7)

ИМЯ
unicode - универсальный набор символов

ОПИСАНИЕ
The international standard ISO/IEC 10646 defines the Universal Character Set (UCS). UCS contains all characters of all other character set standards. It also guarantees "round-trip compatibility"; in other words, conversion tables can be built such that no information is lost when a string is converted from any other encoding to UCS and back.

UCS содержит символы, необходимые для представления практически всех известных сейчас языковых символов. В него включены не только языковые символы из латинской, греческой, кириллицы, иврита, арабской, армянской, грузинской письменности, но и китайские, японские и корейские идеограммы, а также символы из таких письменностей как хирагана, катакана, хангул, деванагари, бенгальской, гурмуки, гуджарати, ория, тамильской, телугской, каннада, малаяламской, тайской, лаосской, кхмерской, бопомофо, тибетской, рунической, эфиопской, канадского слогового письма, чероки, монгольской, охамской, мьянмарской, синхальской,таанской, юи и других. По ещё не включённым письменностям постоянно ведутся работы для поиска их самой оптимальной кодировки для компьютеров и добавлении. К ним относятся не только различные иероглифы и письменности из индо-европейской исторической группы, но и некоторые искусственные языки, такие как тенгвар, сирт и клингонский. Также UCS содержит большое множество графических, типографических, математических и научных символов, используемых в таких программах, как TeX, Postscript, APL, MS-DOS, MS-Windows, Macintosh, шрифтах OCR и многих других текстовых процессорах и издательских системах.

The UCS standard (ISO/IEC 10646) describes a 31-bit character set architecture consisting of 128 24-bit groups, each divided into 256 16-bit planes made up of 256 8-bit rows with 256 column positions, one for each character. Part 1 of the standard (ISO/IEC 10646-1) defines the first 65534 code positions (0x0000 to 0xfffd), which form the Basic Multilingual Plane (BMP), that is plane 0 in group 0. Part 2 of the standard (ISO/IEC 10646-2) adds characters to group 0 outside the BMP in several supplementary planes in the range 0x10000 to 0x10ffff. There are no plans to add characters beyond 0x10ffff to the standard, therefore of the entire code space, only a small fraction of group 0 will ever be actually used in the foreseeable future. The BMP contains all characters found in the commonly used other character sets. The supplemental planes added by ISO/IEC 10646-2 cover only more exotic characters for special scientific, dictionary printing, publishing industry, higher-level protocol and enthusiast needs.

Представление каждого символа в UCS в виде -байтного слова называют формой UCS-2 (только для символов BMP), UCS-4 называют представление каждого символа 4-байтным словом. Также существуют 2 формы кодировки: UTF-8 — для совместимости со старым ПО, работающим с кодировкой ASCII, и UTF-16 — для совместимости с ПО, работающим с кодировкой UCS-2, для не BMP символов до 0x10ffff позиции.

Символы UCS от 0x0000 до 0x007f идентичны обычному набору символов US-ASCII, а символы в диапазоне от 0x0000 до 0x00ff идентичны символам ISO 8859-1 (Latin-1).

  Комбинирующие символы
Некоторые позиции в UCS зарезервированы для комбинирующих символов. Они аналогичны клавишам печатной машинки, которые служат для набора букв с ударением. Комбинирующий символ лишь добавляет ударение к предыдущему символу. Наиболее употребляемые символы, требующие ударения, имеют собственный код в UCS, однако комбинирующий символ позволяет добавить ударение или другой диакритический знак к любому символу. Комбинирующие символы всегда указываются после буквы, которую они изменяют. Например, немецкий символ «умляут-А» (латинская заглавная буква А с диерезой) может быть представлен как зарезервированный специальный символ UCS с кодом 0x00c4, или как комбинация обыкновенной «латинской заглавной буквы А» и последующей «комбинирующей диерезы: 0x0041 0x0308.

Комбинирующие символы являются необходимым инструментом для кодирования символов тайского языка, математики и для пользователей международного фонетического алфавита (International Phonetic Alphabet).

  Уровни реализации
As not all systems are expected to support advanced mechanisms like combining characters, ISO/IEC 10646-1 specifies the following three implementation levels of UCS:

Уровень 1
    Комбинирующие символы и символы Hangul Jamo (вариант кодировки корейского письма, где слоги хангыль кодируются по два или по три гласных кода) не поддерживаются.

Уровень 2
    В дополнении к символам уровня 1 комбинирующие символы разрешено использовать для некоторых языков, в которых они важны (например: тайский, лаосский, иврит, арабский, деванагари, малаяламский).

Уровень 3
    Поддерживаются все символы UCS.

The Unicode 3.0 Standard published by the Unicode Consortium contains exactly the UCS Basic Multilingual Plane at implementation level 3, as described in ISO/IEC 10646-1:2000. Unicode 3.1 added the supplemental planes of ISO/IEC 10646-2. The Unicode standard and technical reports published by the Unicode Consortium provide much additional information on the semantics and recommended usages of various characters. They provide guidelines and algorithms for editing, sorting, comparing, normalizing, converting, and displaying Unicode strings.

  Юникод в Linux
В системах GNU/Linux тип языка Cи wchar_t является 32-битным знаковым целым типом. Его значения всегда интерпретируются библиотекой Си как значения кодов UCS (во всех локалях); в этом случае, согласно стандарту ISO C99, библиотека GNU C определяет константу __STDC_ISO_10646__.

UCS/Unicode может использоваться подобно ASCII в потоках ввода/вывода, соединениях с терминалами, в текстовых файлах, названиях файлов и в переменных окружения в виде многобайтовой кодировке UTF-8, совместимой с ASCII. Для обозначения использования UTF-8 как кодировки во всех приложениях должна быть выбрана подходящая локаль через переменные окружения (например, «LANG=ru_RU.UTF-8»).

The nl_langinfo(CODESET) function returns the name of the selected encoding. Library functions such as wctomb(3) and mbsrtowcs(3) can be used to transform the internal wchar_t characters and strings into the system character encoding and back and wcwidth(3) tells how many positions (0–2) the cursor is advanced by the output of a character.

  Закрытые используемые области (Private Use Areas, PUA)
В основной многоязычной матрице диапазон с 0xe000 до 0xf8ff никогда не будет использован для обозначения стандартных символов, он зарезервирован для частного использования. В Linux эта закрытая область делится на: диапазон 0xe000 по 0xefff может использоваться конечным пользователем; диапазон 0xf000 по 0xf8ff (так называемая зона Linux) может использоваться для расширений, согласованных среди пользователей Linux. В настоящее время регистрацией символов в зоне Linux занимается LANANA, а сам реестр находится в файле Documentation/admin-guide/unicode.rst исходного кода ядра Linux (в Documentation/unicode.txt до Linux 4.10).

Две другие плоскости зарезервированы для закрытого использования, плоскость 15 (дополнительная закрытая используемая область-A, диапазон от 0xf0000 до 0xffffd) и плоскость 16 (дополнительная закрытая используемая область-B, диапазон от 0x100000 до 0x10fffd).

  Литература

•   Information technology — Universal Multiple-Octet Coded Character Set (UCS) — Part 1: Architecture and Basic Multilingual Plane. International Standard ISO/IEC 10646-1, International Organization for Standardization, Geneva, 2000.

    This is the official specification of UCS. Available from http://www.iso.ch/.

•   The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.

•   S. Harbison, G. Steele. C: A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.

    Хорошая книга о программировании на языке Си. Четвёртое издание включает в себя описание поправки 1, сделанной в стандарте ISO C90 в 1994 году. Эта поправка добавляет к стандарту большое количество новых библиотечных функций Си для поддержки кодирования широких и многобайтовых символов, но она не так полна как стандарт ISO C99, который расширяет поддержку широких и многобайтовых символов.

•   Unicode Technical Reports.
    http://www.unicode.org/reports/

•   Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
    http://www.cl.cam.ac.uk/~mgk25/unicode.html

•   Bruno Haible: Unicode HOWTO.
    http://www.tldp.org/HOWTO/Unicode-HOWTO.html

СМ. ТАКЖЕ
locale(1), setlocale(3), charsets(7), utf-8(7)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.