Ya no se como explicarlo, cuando me preguntan sobre la codificación de caracteres de un fichero... (me refiero a mis clientes)... hoy he dado una respuesta que pienso que es buena, que puede ayudar a entenderlo a MUCHA GENTE... (la he puesto en plan sencilla, que no os parezca un tono pedante, pero ya lo he intentado explicar de mil y una formas).
La red esta llenas de páginas y páginas de foros donde la gente dice que una web se le ve mal... y que hacen "mil patrañas" y se escriben lineas y mas lineas en plan "trucos para las charset"... Ahora, voy a "postular la explicación definitiva":
La lata de CocaCola con Fanta
Imagina una estanteria de un supermercado (servidor Web)... Imagina varias latas de refrescos (Documentos)... Si tu "pintas" una lata de Fanta con el logo de Cocacola (y la dejas igual de aspecto que una lata de Cocacola), el contenido, es decir, la Fanta NO se convierte en CocaCola, lo único que sucede es que el que va a coge una CocaCola, piense que es una CocaCola, pero cuando le pegue un trago verá que es Fanta. (el "liquido" seria la charset). Cambiar la cabecera del html (ya sea en el documento, o forzandola mediante la configuración del servidor), no implica que cambies la codificación, eso solo hace que el server le comunique que charset ha de utilizar al cliente/navegador...
Bueno ahora vamos a por la conclusión, que dada por si sola no he conseguido que entiendan...
Conclusión
Para que una pagina esté en UTF-8 (por ejemplo) tienes que guardarla como UTF-8
Lo que creo que es "bueno" de este post, es la explicación anterior, guardarla en vuestro wiki, para cuando os lo pregunten... ahora, dejo aqui la demostración practica... este ejemplo es una tonteria, pero me parecia muy pobre no ponerlo.
En la práctica
Una pagina que pese a que le estan indicando en la cabecera que es UTF-8, "se ven mal los acentos"...
(esto tambien es aplicable para las páginas que hacen includes de otras... es decir para todo!
Modificamos la charset... y si se modifica, y si! funciona bien:
~$ file -i index.html index.html: text/plain; charset=iso-8859-1 ~$ recode iso-8859-1..utf-8 index.html ~$ file -i index.html index.html: text/plain; charset=utf-8
y no es magia... es ciencia...

