Ir directamente al contenido de esta página
Hace poco me encontré con un tutorial bastante interesante en la página de la Actividad de Internacionalización del W3C, Character sets & encodings in XHTML, HTML and CSS (inglés), que explica lo que es un juego de caracteres, ofrece información sobre qué codificación elegir, y, lo más importante, cómo especificar la codificación en un documento. No voy a traducir el documento por su extensión, pero sí voy a resumir la parte que tiene que ver con este aspecto.
Suponiendo que hemos elegido una codificación que consideramos adecuada, y que además el documento que vamos ha publicar ha sido creado y guardado con la misma1, tenemos tres medios para declarar la codificación y que un agente de usuario sepa qué va a encontrar:
meta
.El primer método se aplica en el servidor, y dependiendo del que se esté utilizando, la manera de hacerlo puede variar. Para Apache, por ejemplo, hay que modificar el archivo .htaccess y añadir una línea como ésta:
AddType 'text/html; charset=UTF-8' html
Lo que se está diciendo es que los archivos servidos con un tipo MIME text/html estarán codificados en UTF-8, y que su extensión será .html.
Sin embargo, el W3C recomienda que se asegure por todos los medios posibles que existe una declaración explícita de la codificación, por lo que también es aconsejable incluirla en el propio documento.
Para los documentos XML la declaración de realiza en la primera línea de código:
<?xml version="1.0" encoding="utf-8"?>
En este caso, sería redundante, porque por defecto los intérpretes de XML tratan los documentos con esa codificación, pero como para el resto es necesario declararla así, acostumbrándonos a hacerlo en todos los casos asegurará que nunca nos olvidaremos.
Por su parte, para los documentos HTML se realiza incluyendo en la cabecera una línea de metainformación:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Ésta es la información general. Ahora pasemos a ver en qué medida nos afecta como desarrolladores web.
Todo desarrollador web ilustrado sabe que una página que crea puede servirse como un documento HTML o como un documento XML, en virtud de la DTD que haya elegido para su documento. Los escenarios posibles son por tanto:
meta
.meta
.meta
.meta
.En el caso de CSS, es menos común necesitar declarar su codificación. Personalmente, sólo he necesitado declararla cuando he aplicado un estilo de contenido generado en el que incluía algún texto con caracteres especiales. De todas formas, nunca está de más saber que se puede hacer:
@charset
en el propio archivo .css:
/* Aquí comienzan las declaraciones de estilo */
@charset 'utf-8';
charset
del elemento link
:
<link href="estilo.css" type="text/css" rel="stylesheet" charset="utf-8" />
La ventaja es que declarando la codificación se pueden emplear caracteres no ASCII para los nombres de elementos, atributos y valores; no olvidemos que CSS no siempre se aplica a un documento HTML.
Para quienes no tienen paciencia de leer todo lo anterior, aquí dejo una tabla con los datos:
Tipo de documento | HTTP | <?xml … > |
<meta… /> |
@charset |
<link charset… /> |
---|---|---|---|---|---|
El valor «Opcional» de la columna de la cabecera HTTP significa más bien «Si se puede… sí». | |||||
HTML 4.01 | Opcional | No | Sí | n/a | n/a |
XHTML 1.0 text/html |
Opcional | Opcional | Sí | n/a | n/a |
XHTML 1.0 application/ xhtml+xml |
Opcional | Sí | No | n/a | n/a |
XHTML 1.1 | Opcional | Sí | No | n/a | n/a |
CSS | Opcional | n/a | n/a | Opcional | Opcional |