Provided by: manpages-ru_4.19.0-7_all bug

ИМЯ

       charsets - стандарты наборов символов и интернационализация

ОПИСАНИЕ

       В  этой  справочной  странице представлен обзор различных стандартов наборов символов и их
       использование в Linux до повсеместного распространения Юникода.  Часть  данной  информации
       будет полезна людям, работающим в старых системах или со старыми документами.

       Обсуждаемые стандарты: ASCII, GB 2312, ISO 8859, JIS, KOI8-R, KS и Юникод.

       В  основном, описываются наборы символов, реально используемые в локалях, и опускается всё
       огромное количество наборов, существующих в других системах.

   ASCII
       ASCII (American Standard Code For Information Interchange;  американский  стандартный  код
       для  обмена  информацией)  —  первоначальный  7-битный  набор  символов, разработанный для
       американского варианта английского языка. Также известен как US-ASCII. В  настоящее  время
       описан в стандарте ISO 646:1991 IRV (International Reference Version).

       Существуют  различные  варианты  (из 7 бит) ASCII, в которых американский символ доллара и
       знаки пунктуации заменяются на знаки валют различных стран (Германия, Франция,  Испания  и
       другие).   Все   эти  наборы  устарели;  в  glibc  не  поддерживаются  локали,  которые  в
       действительности не содержат набор ASCII.

       Юникод, при использовании UTF-8, является совместимым с ASCII; простой (plain) текст ASCII
       по-прежнему отображается корректно в современных системах, использующих UTF-8.

   ISO 8859
       ISO  8859  is  a  series  of 15 8-bit character sets, all of which have ASCII in their low
       (7-bit) half, invisible control characters in positions 128 to  159,  and  96  fixed-width
       graphics in positions 160–255.

       Of  these,  the  most  important is ISO 8859-1 ("Latin Alphabet No. 1" / Latin-1).  It was
       widely adopted and supported by different systems, and is gradually  being  replaced  with
       Unicode.  The ISO 8859-1 characters are also the first 256 characters of Unicode.

       Поддержка  в  консоли  других  наборов  символов  8859  осуществляется  в  Linux с помощью
       пользовательских утилит (таких, как setfont(8)),  меняющих  привязки  клавиатуры,  таблицу
       графики EGA и передающих драйверу консоли таблицу соответствий символов шрифтам.

       Here are brief descriptions of each character set:

       8859-1 (Latin-1)
              Latin-1  covers  many European languages such as Albanian, Basque, Danish, English,
              Faroese, Galician, Icelandic, Irish, Italian, Norwegian, Portuguese,  Spanish,  and
              Swedish.   The  lack  of  the ligatures Dutch IJ/ij, French œ, and old-style „German“
              quotation marks was considered tolerable.

       8859-2 (Latin-2)
              Latin-2 охватывает множество славянских и центрально и восточно-европейских языков:
              боснийский,  хорватский,  чешский,  немецкий,  венгерский,  польский,  словацкий  и
              словенский. Замена румынского ș/ț на ş/ţ считается приемлемым.

       8859-3 (Latin-3)
              Latin-3 охватывает эсперанто, мальтийский и  турецкий  языки  (но  турецкий  сейчас
              охватывается 8859-9).

       8859-4 (Latin-4)
              Latin-4  охватывает  северо-европейские  языки:  эстонский,  латвийский и литовский
              языки. Но сейчас они охватываются 8859-10 и 8859-13.

       8859-5 Кириллические символы болгарского, белорусского, македонского, русского,  сербского
              и  (почти  полностью) украинского языков. Никогда широко не использовался, смотрите
              ниже описание KOI8-R/KOI8-U.

       8859-6 Был создан для арабского языка. Таблица начертаний  (глифов)  8859-6  —  это  шрифт
              отдельных  форм  букв  постоянной  ширины;  корректная программа отображения должна
              объединить их, используя корректные начальные, промежуточные и конечные формы.

       8859-7 Был создан для современного греческого языка в 1987 году, обновлён в 2003 году.

       8859-8 Поддерживает современный  иврит  без  niqud  (знаки  пунктуации).  Niqud  и  полный
              библейский иврит не входят в этот набор.

       8859-9 (Latin-5)
              Это вариант Latin-1, в котором исландские буквы заменены турецкими.

       8859-10 (Latin-6)
              Latin-6  добавляет  последние  инуитские  (гренландские)  буквы  и буквы сами (Sami
              Lappish),  отсутствующие  в  Latin-4,  для  того,  чтобы  объединить  шрифты   всех
              нордических языков.

       8859-11
              Поддерживает тайский алфавит и очень похож на стандарт TIS-620.

       8859-12
              This character set does not exist.

       8859-13 (Latin-7)
              Поддерживает  балтийские  языки,  в  частности,  латвийские  символы  не вошедшие в
              Latin-4.

       8859-14 (Latin-8)
              Это кельтский  набор  символов  для  старого  ирландского,  мэнского,  гаэлльского,
              уэльского, корнуэльского и бретонского языков.

       8859-15 (Latin-9)
              Latin-9  похож  на  широко  используемый  Latin-1, но в нём заменены некоторые мало
              используемые символы  на  знак  евро,  а  также  французские  и  финские  лигатуры,
              отсутствующие в Latin-1.

       8859-16 (Latin-10)
              This  character  set covers many Southeast European languages, and most importantly
              supports Romanian more completely than Latin-2.

   KOI8-R / KOI8-U
       KOI8-R — набор символов не ISO, являлся популярным  в  России  до  Юникода.  Нижняя  часть
       таблицы  описывает  ASCII,  верхняя  —  набор  символов  кириллицы,  более  совершенный по
       сравнению с ISO 8859-5.  KOI8-U,  основанный  на  KOI8-R,  имеет  более  полную  поддержку
       украинского  языка.  Ни  один  из  этих  наборов не совместим с ISO-2022 (в отличии от ISO
       8859).

       Поддержка символов KOI8-R  в  консоли  осуществляется  Linux  с  помощью  пользовательских
       утилит,  меняющих  привязки  клавиатуры, таблицу графики EGA и передающих драйверу консоли
       таблицу соответствий символов шрифтам.

   GB 2312
       GB 2312 это национальный китайский стандартный набор символов для упрощенного  китайского.
       Как  и  в  JIS  X  0208,  символы  берутся  из массива 94x94 и состоят из двух байт. Набор
       символов используется для кодировки EUC-CN. EUC-CN является наиболее важной кодировкой для
       Linux  и  включает  в себя ASCII и GB 2312. Заметим, что EUC-CN часто называют GB, GB 2312
       или CN-GB.

   Big5
       Big5 was a popular character set in Taiwan to express traditional Chinese.  (Big5 is  both
       a  character  set  and an encoding.)  It is a superset of ASCII.  Non-ASCII characters are
       expressed in  two  bytes.   Bytes  0xa1–0xfe  are  used  as  leading  bytes  for  two-byte
       characters.   Big5  and its extension were widely used in Taiwan and Hong Kong.  It is not
       ISO 2022 compliant.

   JIS X 0208
       JIS X 0208 is a Japanese national standard character set.   Though  there  are  some  more
       Japanese  national  standard character sets (like JIS X 0201, JIS X 0212, and JIS X 0213),
       this is the most important one.  Characters are mapped into a 94x94 two-byte matrix, whose
       each  byte  is  in  the  range 0x21–0x7e.  Note that JIS X 0208 is a character set, not an
       encoding.  This means that JIS X 0208 itself is not used for expressing text data.  JIS  X
       0208  is  used  as  a  component  to  construct  encodings  such as EUC-JP, Shift_JIS, and
       ISO-2022-JP.  EUC-JP is the most important encoding for Linux and includes ASCII and JIS X
       0208.   In  EUC-JP, JIS X 0208 characters are expressed in two bytes, each of which is the
       JIS X 0208 code plus 0x80.

   KS X 1001
       KS X 1001 это корейский национальный стандарт для наборов символов. Как и в  JIS  X  0208,
       символы  берутся  из  матрицы  94x94 и состоят из двух байт. KS X 1001, так же как и JIS X
       0208, является компонентом для кодировок EUC-KR,  Johab  и  ISO-2022-KR.  EUC-KR  является
       наиболее  важной  кодировкой  для Linux и включает в себя ASCII и KS X 1001. KS C 5601 это
       старое название KS X 1001.

   ISO 2022 и ISO 4873
       Стандарты ISO 2022 и 4873 описывают модель управления  шрифтами,  основанную  на  практике
       работы  с  VT100.  Эта  модель  (частично)  поддерживается  ядром  Linux  и xterm(1). Были
       определены некоторые наборы символов на основе ISO 2022, особенно популярного в Японии.

       There are 4 graphic character sets, called G0, G1, G2, and G3, and  one  of  them  is  the
       current  character set for codes with high bit zero (initially G0), and one of them is the
       current character set for codes with high bit one (initially G1).  Each graphic  character
       set  has  94  or  96  characters, and is essentially a 7-bit character set.  It uses codes
       either 040–0177 (041–0176) or 0240–0377 (0241–0376).  G0 always has size 94 and uses codes
       041–0176.

       Switching  between character sets is done using the shift functions ^N (SO or LS1), ^O (SI
       or LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), ESC O (SS3), ESC ~ (LS1R), ESC  }  (LS2R),
       ESC | (LS3R).  The function LSn makes character set Gn the current one for codes with high
       bit zero.  The function LSnR makes character set Gn the current one for  codes  with  high
       bit one.  The function SSn makes character set Gn (n=2 or 3)  the current one for the next
       character only (regardless of the value of its high order bit).

       94-символьный набор становится набором символов Gn c помощью последовательности ESC  (  xx
       (для  G0),  ESC  )  xx  (для  G1),  ESC  * xx (для G2), ESC + xx (для G3), где xx является
       символом или парой символов, которая содержится в ISO 2375 International Register of Coded
       Character  Sets  (международном  реестре кодированных наборов символов). Например, ESC ( @
       выбирает в качестве G0 набор символов ISO 646, ESC ( A выбирает стандартный набор символов
       UK (со знаком фунта вместо знака номера), ESC ( B выбирает ASCII (со знаком доллара вместо
       знака валюты), ESC ( M выбирает набор символов для африканских языков, ESC ( ! A  выбирает
       кубинский набор символов и т.д. и т.п.

       96-символьный  набор назначается набором символов Gn с помощью последовательности ESC - xx
       (для G1), ESC . xx (для G2) или ESC / xx (для G3). Например, ESC  -  G  выбирает  иврит  в
       качестве G1.

       Мультибайтный    набор    символов    назначается    набором   символов   Gn   управляющей
       последовательностью ESC $ xx или ESC $ ( xx (для G0), ESC $ ) xx (для G1), ESC $ * xx (для
       G2),  ESC  $  + xx (для G3). Например, ESC $ ( C выбирает корейский набор символов для G0.
       Набор японских символов выбирается при помощи ESC $ B, а его  более  новая  версия  —  при
       помощи ESC & @ ESC $ B.

       ISO 4873 stipulates a narrower use of character sets, where G0 is fixed (always ASCII), so
       that G1, G2, and G3 can be invoked only for  codes  with  the  high  order  bit  set.   In
       particular, ^N and ^O are not used anymore, ESC ( xx can be used only with xx=B, and ESC )
       xx, ESC * xx, ESC + xx are equivalent to ESC - xx, ESC . xx, ESC / xx, respectively.

   TIS-620
       TIS-620 is a Thai national standard character set and a superset of ASCII.   In  the  same
       fashion as the ISO 8859 series, Thai characters are mapped into 0xa1–0xfe.

   Юникод
       Юникод  (ISO  10646)  — стандарт, которым можно представить любой символ из всех известных
       человеку языков. В структуре Юникода на кодирование каждого символа выделяется  20.1  бит.
       Так  как  большинство  компьютеров  не  поддерживают целых чисел размерностью 20.1 бит, то
       Юникод, обычно, кодируется в 32-битных целых,  а  также  или  серией  16-ти  битных  целых
       (UTF-16,  2  16-битных целых требуется только при кодировании редких символов), или серией
       8-битных байт (UTF-8).

       Для представления Юникода в Linux  используется  8-битный  формат  преобразования  Юникода
       (UTF-8  -  8-bit Unicode Transformation Format). UTF-8 — это формат непостоянной длины для
       кодирования Юникода. В нём используется 1 байт для кодирования 7-и битов, 2 байта для 11-и
       битов,  3 байта для 16-и битов, 4 байта для 21-ого бита, 5 байтов для 26-и битов, 6 байтов
       для 31-ого бита.

       Пусть 0, 1, x соответствует нулю, единице и случайному биту. Байт  0xxxxxxx  соответствует
       Юникоду  00000000  0xxxxxxx, что, в свою очередь, соответствует символу в ASCII 0xxxxxxxx.
       То есть, коды ASCII совпадают с кодами UTF-8 и людям, использующим  только  ASCII,  ничего
       делать не нужно: ни в коде, ни в файлах.

       Байт  110xxxxx  является  началом  2-байтного  кода,  и  110xxxxx 10yyyyyy преобразуется в
       00000xxx xxyyyyyy. Байт 1110xxxx — начало 3-байтного кода, и  1110xxxx  10yyyyyy  10zzzzzz
       преобразуется  в xxxxyyyy yyzzzzzz (если UTF-8 используется для кодирования 31-битного ISO
       10646, то это прогрессия продолжается до 6-байтных кодов).

       Для большинства текстов, кодированных наборами ISO 8859, это  означает,  что  символы,  не
       входящие  в  ASCII,  теперь  кодируются  двумя  байтами.  Это приводит к тому, что обычный
       текстовый файл становится больше на 1-2 процента. Обычные текстовые файлы на греческом или
       русском  языке увеличиваются на 100%, так как почти все символы в этих языках находятся за
       пределами ASCII.  Для  пользователей  японского  языка  16-ти  битные  символы  теперь,  в
       основном,  представляются  3-мя  байтами.  Хотя  для  некоторых наборов символов (особенно
       ISO-8859-1)  и  есть  алгоритмы  преобразования  в  Юникод,  в  большинстве  случаев   для
       преобразований  требуются  таблицы соответствий, которые могут быть большими для 16-битных
       кодов.

       Note that UTF-8 is self-synchronizing: 10xxxxxx is a tail, any other byte is the head of a
       code.   Note  that the only way ASCII bytes occur in a UTF-8 stream, is as themselves.  In
       particular, there are no embedded NULs ('\0') or '/'s that form part of some larger code.

       Since ASCII, and, in particular, NUL and '/', are unchanged, the kernel  does  not  notice
       that  UTF-8  is  being  used.  It does not care at all what the bytes it is handling stand
       for.

       Визуализация потоков данных Юникода обычно производится с  помощью  таблицы  «подшрифтов»,
       переводящей  единицы  набора  Юникода  в  образы  символов  (глифы).  Внутри  ядра  Юникод
       используется для описания подшрифта, загруженного  в  видеопамять.  Это  означает,  что  в
       консоли  Linux  в  режиме  UTF-8  можно  использовать  набор  символов  с 512-ю различными
       символами. Этого недостаточно для японского, китайского и корейского языков, но достаточно
       для большинства других.

СМ. ТАКЖЕ

       iconv(1), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства    был    сделан   Azamat   Hackimov
       <azamat.hackimov@gmail.com>, Dmitriy  S.  Seregin  <dseregin@59.ru>,  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⟩.