Provided by: manpages-es_1.55-8_all bug

NOMBRE

       charsets  -  internacionalización  y  conjuntos  de caracteres desde el
       punto de vista del programador

DESCRIPCIÓN

       Linux es un sistema operativo internacional. Varias de sus utilidades y
       controladores  de  dispositivos  (incluyendo  el de la consola) admiten
       conjuntos de caracteres multilingües  incluyendo  letras  del  alfabeto
       latino  con marcas diacríticas, acentos, ligaduras, y alfabetos enteros
       no latinos incluyendo el griego, cirílico, árabe y hebreo.

       Esta página  de  manual  presenta  una  visión  de  los  estándares  de
       conjuntos de caracteres desde el punto de vista del programador, y cómo
       encajan todos juntos en Linux. Los estándares en discusión incluyen  el
       ASCII, ISO 8859, KOI8-R, Unicode, ISO 2022 e ISO 4873.

ASCII

       ASCII   (American   Standard  Code  For  Information,  Código  Estándar
       Americano para la Información) es el conjunto de caracteres original de
       7  bits, diseñado inicialmente para el inglés americano. Actualmente se
       describe en el estándar ECMA-6.

       En Gran Bretaña se emplea una variante donde se  reemplaza  el  símbolo
       del  sostenido  o  almohadilla  o  libra peso o número (#) por la libra
       esterlina británica; cuando sea preciso,  las  variantes  americanas  y
       británicas pueden distinguirse por los nombres "US ASCII" y "UK ASCII".

       Como Linux fue escrito para equipos diseñados en los EE.UU., admite  US
       ASCII de modo nativo.

ISO 8859

       ISO  8859 es una serie de conjuntos de caracteres de 8 bits, los cuales
       tienen como su primera mitad  (7  bits)  el  US  ASCII,  caracteres  de
       control  invisibles  en  las  posiciones 128 a 159, y 96 gráficos fijos
       desde la posición 160 hasta la 255.

       De éstos, el más importante es el ISO 8859-1 (Latin-1). Es admitido  de
       modo  nativo  por el controlador de consola de Linux, muy bien admitido
       en X11R6 y es el conjunto de caracteres base de HTML.

       El soporte de consola para los otros conjuntos de caracteres 8859  está
       disponible en Linux a través de utilidades de usuario (como setfont(8))
       que modifican las asociaciones de teclas y la tabla de gráficos EGA/VGA
       y emplean la tabla de tipos de letra de "correspondencia de usuario" en
       el controlador de consola.

       Aquí se presentan breves descripciones de cada conjunto:

       8859-1 (Latin-1)
              Latin-1 cubre la mayoría de lenguajes de Europa Occidental  como
              el  albanés,  catalán, danés, neerlandés, inglés, feroés, finés,
              francés, alemán, gallego, gaélico, islandés, italiano,  noruego,
              portugués,   español   y   sueco.  La  falta  de  las  ligaduras
              neerlandesa ij, francesa oe y las comillas antiguas ,,alemanas‘‘
              es tolerable.

       8859-2 (Latin-2)
              Latin-2  admite  la  mayoría de las lenguas eslavas y de Centro-
              Europa que se escriben con caracteres  latinos:  checo,  alemán,
              húngaro, polaco, rumano, croata, eslovaco y esloveno.

       8859-3 (Latin-3)
              Latin-3  es  popular  entre  los  autores de esperanto, gallego,
              maltés y turco.

       8859-4 (Latin-4)
              Latin-4 introdujo letras  para  el  estonio,  letón  y  lituano.
              Esencialmente está obsoleto; vea el 8859-10 (Latin-6).

       8859-5 Letras  cirílicas  para el búlgaro, bielorruso, macedonio, ruso,
              serbio y ucraniano. Los  ucranianos  leen  la  letra  ‘ghe’  con
              palote   como   ‘heh’  y  necesitarían  una  ‘ghe’  con  plumada
              ascendente para escribir una correcta ‘ghe’.  Vea  la  discusión
              sobre el KOI8-R más abajo.

       8859-6 Para  el  árabe.  La  tabla  de glifos 8859-6 es un tipo fijo de
              formas de letra separadas, pero un  mecanismo  de  visualización
              correcto  debería  combinar  éstas  usando las formas iniciales,
              medias y finales apropiadas.

       8859-7 Admite el griego moderno.

       8859-8 Admite el hebreo.

       8859-9 (Latin-5)
              Ésta es una variante del Latin-1 que reemplaza letras islandesas
              no muy usadas con otras turcas.

       8859-10 (Latin-6)
              El  Latin  6  añade  las  últimas  letras del inuit (esquimal de
              Groenlandia) y del sami (lapón) que faltaban en el Latin 4  para
              cubrir  toda  el  área  nórdica.  RFC  1345  listaba un ‘latin6’
              preliminar y diferente. El sami skolt aún  necesita  unos  pocos
              acentos más que éstos.

KOI8-R

       El  KOI8-R  es  un  conjunto  de caracteres no ISO popular en Rusia. La
       primera mitad es el US ASCII; la segunda es un conjunto  de  caracteres
       cirílico algo mejor diseñado que el ISO 8859-5.

       El  soporte de consola para el KOI8-R está disponible en Linux a través
       de  utilidades  de  usuario  (como  setfont(8))   que   modifican   las
       asociaciones de teclas y la tabla de gráficos EGA y emplean la tabla de
       tipos de letra de "correspondencia de usuario"  en  el  controlador  de
       consola.

UNICODE

       Unicode  (ISO  10646)  es  un  estándar  cuyo  objetivo  es representar
       inequívocamente  cada  glifo  conocido  en  cada  lenguaje  humano.  La
       codificación  nativa  de  Unicode es de 32 bits (versiones más antiguas
       empleaban   16).   Hay   información   sobre   Unicode   en   el    URL
       <http://www.unicode.com>.

       Linux  representa Unicode empleando el Formato de Transferencia Unicode
       de 8 bits (UTF-8). UTF-8 es una codificación  de  Unicode  de  longitud
       variable.  Emplea 1 byte para codificar 7 bits, 2 bytes para 11 bits, 3
       bytes para 16 bits, 4 bytes para 21 bits, 5 bytes para  26  bits,  y  6
       bytes para 31 bits.

       Sean  0,  1,  x  el  0,  el  1  ó  un  bit arbitrario. Un byte 0xxxxxxx
       representa el carácter Unicode 00000000 0xxxxxxx que codifica el  mismo
       símbolo  que el ASCII 0xxxxxxx.  Así, ASCII va sin cambio alguno dentro
       de UTF-8, y la gente que emplea ASCII no nota ningún cambio: ni  en  el
       código ni en tamaños de fichero.

       Un  byte  110xxxxx  es  el comienzo de un código de 2 bytes, y 110xxxxx
       10yyyyyy se ensambla en 00000xxx xxyyyyyy.   Un  byte  1110xxxx  es  el
       comienzo  de  un  código  de  3  bytes, y 1110xxxx 10yyyyyy 10zzzzzz se
       ensambla en xxxxyyyy yyzzzzzz.  (Cuando se emplea UTF-8 para  codificar
       el  ISO  10646  de 31 bits, esta progresión continúa hasta códigos de 6
       bytes.)

       Para los usuarios de ISO-8859-1, esto significa que los caracteres  con
       el  último  bit  a  1  se  codifican ahora con dos bytes. Esto tiende a
       expandir los ficheros de texto ordinarios en un 1 ó 2%. Sin embargo  no
       hay  problemas  de  conversión,  puesto  que los valores Unicode de los
       símbolos de  ISO-8859-1  igualan  a  los  correspondientes  de  los  de
       ISO-8859-1  (extendidos  en  8  bits  iniciales a 0). Para los usuarios
       japoneses esto significa que los  códigos  de  16  bits  de  uso  común
       actualmente,   necesitarán   tres  bytes  y  se  requerirán  tablas  de
       correspondencia. Por eso muchos japoneses prefieren el ISO 2022.

       Observe que UTF-8  es  auto-sincronizante:  10xxxxxx  es  una  cola,  y
       cualquier  otro byte es la cabeza de un código. Observe que de la única
       manera que los bytes ASCII aparecen en un flujo  UTF-8  es  como  ellos
       mismos. En particular, no hay NULs o ’/’s incluidos que formen parte de
       algún código más grande.

       Puesto que ASCII, y, en particular, NUL y ’/’, permanecen  inalterados,
       el núcleo no se entera de que se está empleando UTF-8. No le importa en
       absoluto para qué son los bytes que está manejando.

       La representación de los flujos de datos Unicode se maneja  normalmente
       a  través  de tablas de ‘subtipo’ que hacen corresponder un subconjunto
       de Unicode  a  glifos.  Internamente  el  núcleo  emplea  Unicode  para
       describir  el  subtipo de letra cargada en RAM de vídeo. Esto significa
       que en el modo UTF-8 uno puede emplear un conjunto  de  caracteres  con
       512  símbolos  diferentes.  Esto  no  basta  para  el japonés, chino ni
       coreano, pero es bastante para la mayoría de otros propósitos.

ISO 2022 Y ISO 4873

       Los estándares ISO 2022 y 4873 describen un modelo de control  de  tipo
       de letra basado en la VT100. Este modelo es (parcialmente) admitido por
       el núcleo de Linux y por xterm(1).  Es popular en Japón y Corea.

       Hay 4 conjuntos de caracteres gráficos, llamados G0, G1, G2 y G3, y uno
       de  ellos  es  el conjunto de caracteres actual para los códigos con el
       bit más alto a 0 (inicialmente G0), y uno de ellos es  el  conjunto  de
       caracteres   actual   para  los  códigos  con  el  bit  más  alto  a  1
       (inicialmente G1). Cada conjunto de caracteres gráfico tiene  94  ó  96
       caracteres,  y  es  esencialmente  un conjunto de caracteres de 7 bits.
       Emplea códigos bien entre 040-0177 (041-0176) o  bien  entre  0240-0377
       (0241-0376).   G0  siempre  tiene  de tamaño 94  y emplea códigos en el
       rango 041-0176.

       El cambio entre los conjuntos de caracteres se  realiza  empleando  las
       funciones  de  cambio  ^N (SO o LS1), ^O (SI o LS0), ESC n (LS2), ESC o
       (LS3), ESC N (SS2), ESC O (SS3), ESC ~ (LS1R),  ESC  }  (LS2R),  ESC  |
       (LS3R).   La  función  LSn hace que el conjunto de caracteres Gn sea el
       actual para los códigos con el bit más alto a 0.  La función LSnR  hace
       que  el conjunto de caracteres Gn sea el actual para los códigos con el
       bit más alto a 1.  La función SSn hace que el conjunto de caracteres Gn
       (n=2  ó 3) sea el actual para el siguiente carácter solamente (tenga lo
       que tenga su bit más alto).

       Un conjunto de 94 caracteres se designa como el conjunto de  caracteres
       Gn  por una secuencia de escape ESC ( xx (para G0), ESC ) xx (para G1),
       ESC * xx (para G2), ESC + xx (para G3), donde xx es un símbolo o un par
       de  símbolos  del  Registro  Internacional  de  Conjuntos de Caracteres
       Codificados ISO 2375.  Por ejemplo, ESC ( @ selecciona el  conjunto  de
       caracteres  ISO  646  como  el  G0,  ESC  ( A selecciona el conjunto de
       caracteres estándar de R.U. (con la libra esterlina en lugar del  signo
       numeral  #),  ESC  ( B selecciona el ASCII (con el dólar $ en lugar del
       símbolo monetario ¤), ESC ( M selecciona un conjunto de caracteres para
       lenguas africanas, ESC ( ! selecciona el conjunto de caracteres cubano,
       etc. etc. etc.

       Un conjunto de 96 caracteres se designa como el conjunto de  caracteres
       Gn por una secuencia de escape ESC - xx (para G1), ESC . xx (para G2) o
       ESC / xx (para G3).  Por ejemplo, ESC - G selecciona el alfabeto hebreo
       como el G1.

       Un  conjunto  de  caracteres  multibyte  se designa como el conjunto de
       caracteres Gn por una secuencia de escape ESC $ xx o ESC $ (  xx  (para
       G0),  ESC $ ) xx (para G1), ESC $ * xx (para G2), ESC $ + xx (para G3).
       Por ejemplo, ESC $ ( C selecciona el  conjunto  de  caracteres  coreano
       para  G0.  El  conjunto  de caracteres japonés seleccionado por ESC $ B
       tiene una versión más reciente seleccionada por ESC & @ ESC $ B.

       ISO 4873 estipula un uso más reducido de conjuntos de caracteres, donde
       G0  está  fijo (siempre ASCII), de modo que G1, G2 y G3 sólo pueden ser
       llamados para códigos con el bit más alto a 1.  En particular, ^N y  ^O
       ya  no  se usan más, ESC ( xx sólo puede emplearse con xx=B y ESC ) xx,
       ESC * xx, ESC + xx son equivalentes a ESC - xx, ESC .  xx,  ESC  /  xx,
       respectivamente.

VÉASE TAMBIÉN

       console(4), console_ioctl(4), console_codes(4)