Especificar la codificación de caracteres
Siempre se debería especificar explícitamente la codificación que se está usando. De esta forma, evitaremos confusiones y malas conversiones y nos olvidaremos de los caracteres raros. La forma de especificarla dependerá del lenguaje que estemos usando.
Java
La Máquina Virtual Java (JVM) utiliza una codificación por defecto en aquellos casos en que sea necesaria una conversión entre bytes y caracteres o viceversa, y no se haya especificado explícitamente una codificación. Esta codificación por defecto suele ser la que utiliza el sistema operativo en donde se esté ejecutando. Por ejemplo, en sistemas Windows en español, suele ser windows-1252 (también conocida como cp1252).
La codificación por defecto que se esté usando se puede saber consultando el valor de la propiedad del sistema "file.encoding".
System.getProperty("file.encoding");
Asignando valor a esta propiedad se puede cambiar la codificación por defecto que usará la máquina virtual. Esto se puede hacer de 2 maneras, en el arranque indicándolo con un parámetro -D o programáticamente.
java -Dfile.encoding=UTF-8 jpereza.Clase
System.setProperty("file.encoding", "UTF-8");
Documentos XML
Los ficheros XML pueden comenzar con una cabecera, llamada prólogo, donde se puede especificar la codificación usada en el fichero. Dicho prólogo tiene el siguiente formato:
<?xml version="1.0" encoding="ISO-8859-1" ?>
El valor del atributo encoding es el nombre de la codificación empleada.
Si no se especifica ninguna codificación en el prólogo, se usará <abbr xml:lang="en" title="8-bit Unicode Transformation Format">UTF-8</abbr>.
Páginas HTML
Las páginas HTML utilizan una serie de etiquetas que ofrecen información sobre la propia página. En una de estas meta-etiquetas se puede especificar la codificación que se está usando.
<META httpequiv="ContentType" content="text/html; charset=UTF-8">
El atributo httpequiv con valor "ContentType" especifica el equivalente de la cabecera ContentType del protocolo HTTP. Como valor del atributo content se debe indicar el tipo de contenido, por ejemplo text/html, y el nombre de la codificación empleada, por ejemplo UTF-8.
Hojas de estilo CSS
En los ficheros de hojas de estilo CSS también se debería especificar la codificación usada. Esto no afecta a las declaraciones de estilo embebidas dentro de otro documento, ya que en este caso, se aplica la codificación especificada por el documento contenedor.
Se debe utilizar la regla @charset indicando el nombre de la codificación utilizada. Por ejemplo:
@charset "ISO-8859-1";
La regla @charset debe estar al principio del fichero. No debe estar precedida de ningún caracter, ni siquiera comentarios.
En el caso de documentos HTML, también se puede especificar la codificación de la hoja de estilos con el atributo charset de la etiqueta link. Por ejemplo:
<LINK rel="stylesheet" type="text/css" charset="UTF-8" href="estilos.css" />
Texto plano
Los ficheros de texto plano son aquellos ficheros de texto que no siguen un formato estandarizado, y por lo tanto no tienen definido cómo especificar la codificación empleada. Al no haber una forma de especificar la codificación en el propio fichero, ésta debería ser especificada por cualquier otro medio disponible, ya sea usando alguna convención o indicándolo en la documentación correspondiente.