Ver Mensaje Individual
  #18 (permalink)  
Antiguo 26/11/2005, 16:14
queweno
 
Fecha de Ingreso: julio-2003
Mensajes: 21
Antigüedad: 20 años, 9 meses
Puntos: 0
Siento cargarte. Lo que pasa es que hay que saber porqué una cosa funciona y otra no.

El objeto XMLHttpRequest y encodeURIComponent trabajan con la codificación de caractéres UTF-8 y no con ISO-8859-1, como viene por defecto en Apache, que seguramente es el que todos utilicemos, por lo que surgen todos estos problemas.
Una solución es crear un .htaccess con la siguiente directiva: AddDefaultCharset off
con lo que nos ahorraríamos tener que codificar o descodificar en la parte del servidor, pero esta solución no siempre es posible.

Otra solución y seguir utilizando encodeURIComponent es la de pasar los datos que recibimos en nuestros scripts a ISO-8859-1 con la función utf8_decode de PHP y para enviarlos hacemos la operación inversa mediante utf8_encode y creamos una cabecera indicando la codificación, header("Content-type: text/html; charset=utf-8");

En ese ejemplo tuyo encodeURIComponent nunca funcionaría, el primer problema que surge es que en el documento HTML ya le estás indicando en la etiqueta meta <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> que estás trabajando con ISO-8859-1 así que no sirve de mucho hacer ese cacao de caracteres.

Para mí, lo mejor es usar siempre UTF-8. Siempre recomiendo este artículo de minid: http://www.minid.net/2005/05/24/utf-8-vale-la-pena/