Provided by: manpages-es_1.55-10_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)