UTF-8

UTF-8

De TW

UTF-8 (Unicode) es una codificación de caracteres (un charset). Una codificación de caracteres es un mapeo entre bytes (secuencias de 1s y 0s) y una tabla de caracteres, que son letras en algún alfabeto.

UTF-8 es una codificación de largo variable, esto es, una letra puede ser representada por 1, 2, 3, o hasta 4 bytes. Los caracteres más simples (números, letras sin acento, y algunos signos de puntuación) se representan con 1 byte. Los caracteres como letras con acento o marcas diacríticas, así como los caracteres en griego, cirílico, hebreo, árabe se representan con 2 bytes. Los caracteres en prácticamente todos los demás idiomas, básicamente chino, japonés, koreano, etc. se representan con 3 bytes y poquísimos caracteres requieren 4 bytes.

Para convertir de texto codificado en latin-1 (iso-8859-1) que es una codificación que se usa para el castellano y otras lenguas de europa occidental, que usa un byte por caracter, se puede usar:

iconv --from=iso-8859-1 --to=utf-8 < entrada.txt > salida.txt

En que entrada.txt es el archivo en formato latin-1, y salida.txt es el archivo en unicode.

Probando UTF-8 en unix

El archivo test1.txt contiene la palabra "Papá" escrita en latin-1:

% od -c test1.txt
0000000   P   a   p 341  \n

Nota que el carácter con acento está representado por solamente 1 byte. Ahora lo podemos convertir a UTF-8:

% iconv --from=iso-8859-1 --to=utf-8 < test1.txt > test2.txt
% od -c test2.txt
0000000   P   a   p 303 241  \n

Y ahora el carácter con acento está representado por 2 bytes. Si intentamos ver este archivo en un terminal con latin-1, veremos:

cat test2.txt
Papá

Fíjate que el carácter con acento fue reemplazado por 2 caracteres por un terminal que no supo interpretarlo. Como regla general, si vemos el caracter "Ã" es un buen indicador de que estamos usando un terminal que no es capaz de ver UTF-8 sobre un fichero UTF-8.

Ver también

Tabla de caracteres UTF-8