5.1.1.

17 agosto 2004

Tipo de contenido y juego de caracteres

Post t�cnico que coment� originalmente en otro lado y que como no tengo ganas de pensar, reproduzco ac�.

Nota: Puedo estar equivocado. Esto es lo que entiendo hasta ahora.

Sobre para que sirve

<meta http-equiv="Content-Type" 
content="text/html; charset=iso-8859-1" />

En principio cre�a le hac�an entender al navegador que tipo de archivo era y que juego de caracteres usaba.

Normalmente este tipo de informaci�n es enviada por el mismo servidor mediante el encabezado HTTP (del ingl�s HTTP Header) Content-Type. O sea, el servidor (seg�n su configuraci�n) le dice al navegador que los documentos con extensi�n HTML son del tipo text/html o los de extensi�n PNG son de tipo image/png. Si el navegador puede mostrar el tipo de archivo especifico,ya sea porque est� capacitado de fabrica (como un navegador con respecto a los documentos HTML) o mediante un plug-in (con los documentos de Flash o PDF), lo har�, y sino muestra la opci�n de guardarlo.

El problema saltar�a en el asunto del juego de caracteres. Como un servidor puede estar alojando diferentes p�ginas con distintos juegos de caracteres (siendo iso-8859-1 y UTF-8 la m�s conocidas), no hay forma de configurarlo que sea totalmente a prueba de fallos. Por tanto aqu� entra en juego el elemento meta. Cuando el navegador encuentra uno de ellos, simula que fue enviado por el navegador. Entonces, si el servidor por defecto envia como juego de caracteres el UTF-8, la informaci�n en el elemento meta lo sobreescribe. Si los header HTTP aparece definido el juego de caracteres, la informaci�n del elemento META debe ser ignorada. Aclaraci�n: �sto no se aplicar�a al valor content, o sea, si cambiara text/html por otra cosa, no habr�a diferencia (�por qu�? No tengo idea, pero estoy seguro que es una buena raz�n). Cuestiones de seguridad hasta donde averig�e

Epilogo: Una prueba de como el servidor env�a el tipo de archivo al navegador ser�a, sin necesidad de un servidor, en Windows cambiar la extensi�n de una imagen por otra que sea conocida (por ejemplo, TXT). Si hacen un drag&drop de esta imagen renombrada sobre el navegador, se mostrar� como puro texto porque Windows (jugando a ser el servidor) le dijo que ten�a que tratarlo como texto (envia el encabezado text/plain).

Una segunda prueba ser�a borrar completamente la extensi�n. Cuando el navegador trate de abrirla, al notar que no est� especificado el tipo de archivo, juega a adivinarla revisando su contenido (si encuentra tags HTML ser� text/html o si la librer�a gr�fica puede manejarla, lo tomar� como una imag�n).

Epilogo 2: Aparte de configurar el propio servidor, dos formas de determinar el Content-Type ser�an:

  1. Mediante scripts de PHP o ASP (y lenguajes s�miles). En PHP ser�a usando header() hasta donde recuerdo.
  2. Mediante un archivo .htaccess en la carpeta correspondiente que incluya la linea
    AddType 'text/html; charset=ISO-8859-1' html

Nota: en mi vida configur� un servidor, por lo que no puedo asegurar como funciona (en todos sus aspectos) el .htaccess.

Powered by Blogger