Go to main content
Bypass navigation bar Referencia HTML Tags HTML Tutoriales HTML
Bypass language selection
Bypass location bar

Location: Inicio > Referencia HTML > Codificación de caracteres

Bypass main content

Codificación de caracteres

Si pudieras ver una conversación entre computadoras, probablemente luciría como esto: "010110111011101011010010110...". Éste es el métdo que las computadoras utilizan para comunicarse entre sí (formato binario). Pero por qué alguien diseñaría una computadora con un sistema binario en lugar de usar un alfabeto normal? Bueno, la razón es que el sistema binario se adapta perfectamente a la estructura de los circuitos, donde pueden tener sólo dos señales diferentes: un pulso eléctrico (1) o simplemente ninguna señal (0).

Pero entonces, éstos códigos son, cuando menos, difíciles de comprender. La razón para la existencia de la codificación de caracteres es que necesitamos traducir estos unos y ceros (bits) en un lenguaje más legible para los humanos.

Lo que una codificación de caracteres de n-bits hace es separar estos códigos de bits en grupos de n bits cada uno, y asignar un símbolo a ese trozo de secuencia. De manera simple, una codificación de caracteres (también llamado set, juego, tabla o conjunto de caracteres) puede ser considerado como una tabla de traducción, donde a cada grupo de bits le es asignado un carácter. Por ejemplo, una codificación de caracteres de 8-bits podría representar la secuencia "10010101" como la letra "a", la "01101100" como el símbolo "&", y así sucesivamente.

Para arroja un poco de luz al párrafo anterior, tomaré una codificación de caracteres en particular que resulta ser una de las más famosas para los sistemas de computadoras occidentales: la codificación ASCII. Esta codificación es muy primitica y, por lo tanto, simple. La siguiente tabla muestra todos los valores para las letras mayúsculas (de la A a la Z):

ASCII character encoding from A to M">
CarácterCódigo Binario
A 1000001
B 1000010
C 1000011
D 1000100
E 1000101
F 1000110
G 1000111
H 1001000
I 1001001
J 1001010
K 1001011
L 1001100
M 1001101
ASCII character encoding from N to Z">
CarácterCódigo Binario
N 1001110
O 1001111
P 1010000
Q 1010001
R 1010010
S 1010011
T 1010100
U 1010101
V 1010110
W 1010111
X 1011000
Y 1011001
Z 1011010

Si hechas un vistazo más de cerca, verás que ningún código está repetido. Esto es algo hecho a propósito para evitar ambigüedades y es común a todas las codificaciones.

De este modo, si interceptamos una línea de código de computadora que dice "1001000101010010011011001100" y sabemos que el juego de caracteres utilizado es el ASCII podemos traducir su significado al alfabeto occidental. Primero separamos la líneas en grupos de 7 números cada una (porque ASCII es un set de caracteres de 7-bits) lo que resulta en: "1001000 1010100 1001101 1001100". Ahora, cada uno de estos trozos es un carácter, que podemos decodificar haciendo coincidir las secuencias con la tabla ASCII. Si buscas las coincidencias en la tabla de arriba, verás que la palabra es HTML.

La misma lógica podría aplicarse (inversamente) en caso de que necesites transformar un texto en una secuencia de bits.

Las codificaciones de caracteres son ampliamente utilizados (aunque no nos demos cuenta) en sistemas operativos, documentos de texto, documentos HTML, documentos de e-mail, etc. Cada piza de texto debe tener un juego de caracteres ya que, en fin, toda la información digital es una secuencia de bits.

Este es el motivo por el cual las codificaciones de caracteres importan para HTML. Ya que un documento HTML es una pieza de texto que debe ser leido e interpretado (por navegadores y personas), debe utilizar un juego de caracteres. De no ser especificado, el juego de caracteres es establecido por defecto y la mayoría de las veces es enviado en la información de encabezado cuando la página es solicitada.

Para especificar un juego de caracteres en tu página, deberías usar el tag HTML meta en el encabezado del docuemnto (elemento HTML head). en el siguiente ejemplo, haremos una declaración, estableciendo a ASCII (con su nombre preferido US-ASCII) como el juego de caracteres del documento.

<meta http-equiv="content-type" content="text/html; charset=US-ASCII">

Otros juegos de caracteres muy populares y úliles son ISO-8859-1 (comúnmente llamado "Latin 1") y UTF-8.

La unificación de UTF-8

Las codificaciones de caracteres nacieron con las computadoras como un mecanismo de traducir el código binario de una computadora a texto legible por humanos. Pronto, los fabricantes de computadoras comenzaron a crear sus propios sistemas de caracteres de acuerdo a las necesidades del mercado, creando una onda expansive que resultó en un inmenso número de tablas de caracteres diferentes.

Esta onda expansiva tuvo dos principales sustentos. Primero, la simplicidad con la que los juegos de caracteres pueden ser creados (básicamente cualquiera puede crear su propia tabla de caracteres, agrupando los unos y ceros y asignándolo cada grupo a un carácter). Segundo, las diferentes necesidades de cada mercado (el lenguaje al que puntaban las ventas y su uso).

El estándar de industria Unicode está pensado para reemplazar y unificar los juegos de caracteres existentes para reducir su número y mejorar la efectividad (resolviendo las faltas de otros juegos de caracteres). El estándar Unicode codifica caracteres usando diferentes esquemas llamados Formatos de Transformación Unicode (UTF).

UTF-8 es un juego de caracteres de longitud variable de 8-bits para Unicode que se está volviendo muy popular para Internet gracias a su capacidad de representar todo carácter universal, y siendo aún compatible con ASCII. UTF-8 usad de 1 a 4 bytes para codificar un carácter (8 a 32 bits) dependiendo del símbolo Unicode.

Un documento HTML que utiliza la codificación de caracteres UTF-8 debería contener una declaración como la siguiente en su encabezado:

<meta http-equiv="content-type" content="text/html; charset=utf-8">

Servir documentos con la codificación UTF-8 permite a los autores insertar cualquier tipo de caracteres sin necesidad de utilizar de referencias de caracteres (excepto para símbolos de marcado). Pero ten cuidado que la creación y edición de documentos UTF-8 debe realizarse en un editor de texto compatible con esta codificación (y debe estar correctamente configurado), de otro modo, el resultado será la malinterpretación de caracteres.

Diseño y desarrollo: Latitud29.com

Vínculos y logos|Contacto|Más allá de HTML|Herramientas y recursos|Mapa del sitio|Webmaster|Dona