| unicode(7) | Miscellaneous Information Manual | 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 позиции.
The UCS characters 0x0000 to 0x007f are identical to those of the classic US-ASCII character set and the characters in the range 0x0000 to 0x00ff are identical to those in ISO/IEC 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:
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.
В системах 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.
В основной многоязычной матрице диапазон с 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).
Русский перевод этой страницы руководства разработал(и) 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> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 2 мая 2024 г. | Справочные страницы Linux 6.9.1 |