1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Markus Kuhn, 1996
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" 1995-11-26 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" First version written
.\" Translated by Miguel A. Sepulveda <angel@vivaldi.princeton.edu>
.\" Translation revised June 9 1998 by Juan Piernas <piernas@dif.um.es>
.\"
.TH UTF-8 7 "26 Noviembre 1995" "Linux" "Manual del Programador de Linux"
.SH NOMBRE
UTF-8 \- una codificacin Unicode mutibyte compatible con ASCII
.SH DESCRIPCIN
El conjunto de caracteres
.B Unicode
ocupa un espacio de cdigos de 16 bits. La codificacin
Unicode ms obvia (conocida como
.BR UCS-2 )
consiste en una secuencia de palabras de 16 bits. Tales cadenas
pueden contener, como parte de muchos caracteres de 16 bits,
bytes como '\\0' or '/', que tienen un significado especial
en nombres de ficheros y en otras variables de funciones de la
biblioteca C. Adems, la mayora de las herramientas de UNIX esperan
ficheros ASCII y no pueden leer palabras de 16 bits como caracteres
sin considerables modificaciones. Por estas razones,
.B UCS-2
no es una codificacin externa apropiada de
.B Unicode
en nombres de ficheros, variables de entorno, etc. El
.BR "ISO 10646 Universal Character Set (UCS)" ,
es un superconjunto de Unicode con un espacio de cdigos de hasta
31 bits y la codificacin obvia para dicho conjunto,
.B UCS-4
(una secuencia de palabras de 32 bits), posee los mismos problemas.
La codificacin
.B UTF-8
de
.B Unicode
y
.B UCS
carece de estos problemas y es la forma a seguir para usar el conjunto de
caracteres
.B Unicode
bajo sistemas operativos al estilo UNIX.
.SH PROPIEDADES
La codificacin
.B UTF-8
tiene los siguientes propiedades atractivas:
.TP 0.2i
*
Los caracteres
.B UCS
0x00000000 a 0x0000007f (el conjunto clsico de caracteres
.B US-ASCII
se codifican simplemente como los bytes
0x00 a 0x7f (compatibilidad con ASCII)
Esto significa que los ficheros y cadenas que contengan
solament caracteres ASCII de 7 bits tienen la misma codificacin en
.B ASCII
y en
.BR UTF-8 .
.TP
*
Todos los caracteres
.B UCS
> 0x7f se codifican como una secuencia multibyte
formadae solamente por bytes en el rango
0x80 a 0xfd, por tanto ningn byte
ASCII puede aparecer como parte de otro carcter y no hay problemas
con, por ejemplo, '\\0' or '/'.
.TP
*
Se preserva la enumeracin lexicogrfica de las cadenas
.B UCS-4
.
.TP
*
Los 2^31 cdigos posibles UCS pueden codificarse con
.BR UTF-8 .
.TP
*
Los bytes 0xfe y 0xff no se usan nunca en la codificacin
.B UTF-8
.TP
*
El primer byte de una secuencia multibyte que represente un
carcter no ASCII
.B UCS
siempre se halla en el rango 0xc0 a 0xfd, e indica la longitud
de la secuencia. El resto de los bytes de la secuencia se hallan en
el rango 0x80 a 0xbf. Esto permite una fcil resincronizacin y
resulta en una codificacin sin estado y robusta frente a la
prdida de bytes.
.TP
*
Los caracteres
.B UCS
codificados en
.B UTF-8
pueden llegar a ser de 6 bytes, no obstante los caracteres
.B Unicode
slo pueden ser de 3 bytes a lo sumo. Como Linux usa tan solo el
subconjunto
.B Unicode
de 16 bits de
.BR UCS ,
en Linux la secuencias multibyte
.B UTF-8
slo pueden tener 1, 2 3 bytes.
.SH CODIFICACIN
Las siguientes secuencias de bytes se usan para representar un
carcter. La secuencia a usar depende del cdigo UCS correspondiente
al carcter:
.TP 0.4i
0x00000000 - 0x0000007F:
.RI 0 xxxxxxx
.TP
0x00000080 - 0x000007FF:
.RI 110 xxxxx
.RI 10 xxxxxx
.TP
0x00000800 - 0x0000FFFF:
.RI 1110 xxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x00010000 - 0x001FFFFF:
.RI 11110 xxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x00200000 - 0x03FFFFFF:
.RI 111110 xx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x04000000 - 0x7FFFFFFF:
.RI 1111110 x
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.PP
Las posiciones
.I xxx
se rellenan con los bits del nmero de cdigo del carcter
representado en binario. Slo se puede usar la secuencia ms corta
que pueda representar el nmero de cdigo.
.SH EJEMPLOS
El carcter
.B Unicode
0xa9 = 1010 1001 (el signo de copyright) se codifica en
.B UTF-8
como
.PP
.RS
11000010 10101001 = 0xc2 0xa9
.RE
.PP
y el carcter 0x2260 = 0010 0010 0110 0000 (el smbolo de "distinto que") se
codifica como:
.PP
.RS
11100010 10001001 10100000 = 0xe2 0x89 0xa0
.RE
.SH ESTNDARES
ISO 10646, Unicode 1.1, XPG4, Plan 9.
.SH AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.SH "VASE TAMBIN"
.B unicode(7)
|