Acentos en AJAX

Al utilizar un Charset distinto a UTF8 en tu web, habrás notado que se muestran carácteres extraños en la respuesta Ajax de tus scripts. No solo la respuesta necesita modificaciones para funcionar en otros formatos (en este caso en ISO-8859-1) sino también la recepción de datos también habrá que formatearla.

Por un lado, para mostrar en ISO-8859-1, en PHP es necesario incluir una cabecera (en ASP lo haremos con un Response.Header()):

  1. // cabecera que le dice al navegador el formato del texto
  2. header("Content-Type: text/html; charset=iso-8859-1");
  3. // cabeceras para no cachear el resultado (Tanto Explorer como Firefox cachean)
  4. header("Cache-Control: no-cache, must-revalidate");
  5. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

En el momento que enviemos cadenas de texto y tengamos que operar o mostrarlas en el fichero al que se hace la petición Ajax, deberemos formatearla. La razón es que el Objeto XMLHTTP trata el texto en formato UTF8, por lo tanto, aunque lo enviemos desde una página en ISO-8859-1, se enviará como UTF8 y si lo intentamos mostrar en una página con ISO-8859-1, se verán carácteres extraños. Por ello, si queremos tratar cadenas de texto, antes de nada, las formatearemos así:

  1. // recibo la cadena por GET y le aplico la decodificación
  2. $Nueva_Cadena = utf8_decode($_GET[Cadena]);
  3. echo $Nueva_Cadena;

Y así podremos tratar correctamente el texto en otro formato distinto a UTF8.

Aunque todo el mundo recomienda trabajar en UTF8, yo siempre he trabajado en este otro formato.

Leave a Reply

*

Next ArticleInstalar mod_auth_mysql en Apache 2.2