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

NOMBRE

       charsets  -  internacionalizacion  y  conjuntos  de caracteres desde el
       punto de vista del programador

DESCRIPCI'ON

       Linux es un sistema operativo internacional. Varias de sus utilidades y
       controladores  de  dispositivos  (incluyendo  el de la consola) admiten
       conjuntos de caracteres multilingues  incluyendo  letras  del  alfabeto
       latino  con marcas diacriticas, acentos, ligaduras, y alfabetos enteros
       no latinos incluyendo el griego, cirilico, arabe y hebreo.

       Esta pagina  de  manual  presenta  una  vision  de  los  estandares  de
       conjuntos de caracteres desde el punto de vista del programador, y como
       encajan todos juntos en Linux. Los estandares en discusion incluyen  el
       ASCII, ISO 8859, KOI8-R, Unicode, ISO 2022 e ISO 4873.

ASCII

       ASCII   (American   Standard  Code  For  Information,  Codigo  Estandar
       Americano para la Informacion) es el conjunto de caracteres original de
       7  bits, disenado inicialmente para el ingles americano. Actualmente se
       describe en el estandar ECMA-6.

       En Gran Bretana se emplea una variante donde se  reemplaza  el  simbolo
       del  sostenido  o  almohadilla  o  libra peso o numero (#) por la libra
       esterlina britanica; cuando sea preciso,  las  variantes  americanas  y
       britanicas pueden distinguirse por los nombres "US ASCII" y "UK ASCII".

       Como  Linux fue escrito para equipos disenados 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  graficos  fijos
       desde la posicion 160 hasta la 255.

       De  estos, el mas 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 esta
       disponible en Linux a traves de utilidades de usuario (como setfont(8))
       que modifican las asociaciones de teclas y la tabla de graficos EGA/VGA
       y emplean la tabla de tipos de letra de "correspondencia de usuario" en
       el controlador de consola.

       Aqui se presentan breves descripciones de cada conjunto:

       8859-1 (Latin-1)
              Latin-1  cubre la mayoria de lenguajes de Europa Occidental como
              el albanes, catalan, danes, neerlandes, ingles,  feroes,  fines,
              frances,  aleman, gallego, gaelico, islandes, italiano, noruego,
              portugues,  espanol  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 mayoria de las lenguas eslavas  y  de  Centro-
              Europa  que  se  escriben con caracteres latinos: checo, aleman,
              hungaro, polaco, rumano, croata, eslovaco y esloveno.

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

       8859-4 (Latin-4)
              Latin-4  introdujo  letras  para  el  estonio,  leton y lituano.
              Esencialmente esta obsoleto; vea el 8859-10 (Latin-6).

       8859-5 Letras cirilicas para el bulgaro, bielorruso,  macedonio,  ruso,
              serbio  y  ucraniano.  Los  ucranianos  leen  la letra `ghe' con
              palote  como  `heh'  y  necesitarian  una  `ghe'   con   plumada
              ascendente  para  escribir  una correcta `ghe'. Vea la discusion
              sobre el KOI8-R mas abajo.

       8859-6 Para el arabe. La tabla de glifos 8859-6  es  un  tipo  fijo  de
              formas  de  letra  separadas, pero un mecanismo de visualizacion
              correcto deberia combinar estas  usando  las  formas  iniciales,
              medias y finales apropiadas.

       8859-7 Admite el griego moderno.

       8859-8 Admite el hebreo.

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

       8859-10 (Latin-6)
              El Latin 6 anade las  ultimas  letras  del  inuit  (esquimal  de
              Groenlandia)  y del sami (lapon) que faltaban en el Latin 4 para
              cubrir toda el  area  nordica.  RFC  1345  listaba  un  `latin6'
              preliminar  y  diferente.  El sami skolt aun necesita unos pocos
              acentos mas que estos.

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
       cirilico algo mejor disenado que el ISO 8859-5.

       El soporte de consola para el KOI8-R esta disponible en Linux a  traves
       de   utilidades   de   usuario  (como  setfont(8))  que  modifican  las
       asociaciones de teclas y la tabla de graficos EGA y emplean la tabla de
       tipos  de  letra  de  "correspondencia de usuario" en el controlador de
       consola.

UNICODE

       Unicode (ISO  10646)  es  un  estandar  cuyo  objetivo  es  representar
       inequivocamente  cada  glifo  conocido  en  cada  lenguaje  humano.  La
       codificacion nativa de Unicode es de 32 bits  (versiones  mas  antiguas
       empleaban    16).   Hay   informacion   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 codificacion 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  o  un  bit  arbitrario.  Un  byte  0xxxxxxx
       representa  el caracter Unicode 00000000 0xxxxxxx que codifica el mismo
       simbolo que el ASCII 0xxxxxxx.  Asi, ASCII va sin cambio alguno  dentro
       de  UTF-8,  y la gente que emplea ASCII no nota ningun cambio: ni en el
       codigo ni en tamanos de fichero.

       Un byte 110xxxxx es el comienzo de un codigo de  2  bytes,  y  110xxxxx
       10yyyyyy  se  ensambla  en  00000xxx  xxyyyyyy.  Un byte 1110xxxx es el
       comienzo de un codigo 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 progresion continua hasta  codigos  de  6
       bytes.)

       Para  los usuarios de ISO-8859-1, esto significa que los caracteres con
       el ultimo bit a 1 se codifican ahora  con  dos  bytes.  Esto  tiende  a
       expandir  los ficheros de texto ordinarios en un 1 o 2%. Sin embargo no
       hay problemas de conversion, puesto que  los  valores  Unicode  de  los
       simbolos  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  codigos  de  16 bits de uso comun
       actualmente,  necesitaran  tres  bytes  y  se  requeriran   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 codigo. Observe que de la  unica
       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
       algun codigo mas grande.

       Puesto  que ASCII, y, en particular, NUL y '/', permanecen inalterados,
       el nucleo no se entera de que se esta empleando UTF-8. No le importa en
       absoluto para que son los bytes que esta manejando.

       La  representacion de los flujos de datos Unicode se maneja normalmente
       a traves de tablas de `subtipo' que hacen corresponder  un  subconjunto
       de  Unicode  a  glifos.  Internamente  el  nucleo  emplea  Unicode para
       describir el subtipo de letra cargada en RAM de video.  Esto  significa
       que  en  el  modo UTF-8 uno puede emplear un conjunto de caracteres con
       512 simbolos diferentes. Esto  no  basta  para  el  japones,  chino  ni
       coreano, pero es bastante para la mayoria de otros propositos.

ISO 2022 Y ISO 4873

       Los  estandares  ISO 2022 y 4873 describen un modelo de control de tipo
       de letra basado en la VT100. Este modelo es (parcialmente) admitido por
       el nucleo de Linux y por xterm(1).  Es popular en Japon y Corea.

       Hay 4 conjuntos de caracteres graficos, llamados G0, G1, G2 y G3, y uno
       de ellos es el conjunto de caracteres actual para los  codigos  con  el
       bit  mas  alto  a 0 (inicialmente G0), y uno de ellos es el conjunto de
       caracteres  actual  para  los  codigos  con  el  bit  mas  alto   a   1
       (inicialmente  G1).  Cada  conjunto de caracteres grafico tiene 94 o 96
       caracteres, y es esencialmente un conjunto de  caracteres  de  7  bits.
       Emplea  codigos  bien  entre 040-0177 (041-0176) o bien entre 0240-0377
       (0241-0376).  G0 siempre tiene de tamano 94  y  emplea  codigos  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 funcion LSn hace que el conjunto de caracteres  Gn  sea  el
       actual  para los codigos con el bit mas alto a 0.  La funcion LSnR hace
       que el conjunto de caracteres Gn sea el actual para los codigos con  el
       bit mas alto a 1.  La funcion SSn hace que el conjunto de caracteres Gn
       (n=2 o 3) sea el actual para el siguiente caracter solamente (tenga  lo
       que tenga su bit mas 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 simbolo o un par
       de simbolos 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  estandar de R.U. (con la libra esterlina en lugar del signo
       numeral #), ESC ( B selecciona el ASCII (con el dolar $  en  lugar  del
       simbolo monetario x), 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 japones seleccionado  por  ESC  $  B
       tiene una version mas reciente seleccionada por ESC & @ ESC $ B.

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

V'EASE TAMBI'EN

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