Codificación de caracteres

eXtreM3

Llevo un rato atascado por una tontería y no sé qué leches pasa, he probado todo lo que se me ha pasado por la cabeza y nada.

Con jquery llamo mediante ajax a una url que realiza una consulta mysql a la base de datos. El último parámetro puede contener tildes, y en ese caso la consulta se peta, si no lleva caracteres especiales ni espacios la hace perfectamente y el ajax retorna bien.

Digamos que en html tengo la palabra Andalucía, con jquery cojo ese valor y lo mando a: url_base/controlador/modelo/(param1). A la url llega como Andalucía, pero si hago un echo del parámetro, me pone: Andaluc%C3%ADa.

¿Cómo puedo hacer para que convierta ese ascii a utf8? He probado los utf encode y decode, la iconv. También he probado un encodeURI en el jquery cuando envío la variable, y nada, todo falla, suda de mí y sigue poniendo los caracteres en ascii.

Ayuda pls :(

m0rG

Si haces un echo y te devuelve los caracteres %C3%AD seguramente es que estás utilizando el parámetro que te llega sin decodificar (URL encoding). Las URL sólo pueden contener caracteres ASCII, por eso todos los caracteres fuera del rango ASCII se transforman en esa representación que ves. En PHP puedes decodificar este código con la función urldecode. Los valores en $GET y $POST ya están decodificados.

Prueba a utilizar urldecode sobre el parámetro que te llega en PHP y a ver si te funciona bien la consulta (si haces un echo y lo ves bien debería funcionar sin problemas).

2 respuestas
eXtreM3

#2 oh, se me olvidó el urldecode! Mañana a primera hora lo pruebo, casi seguro que debe funcionar, gracias ;)

eXtreM3

#2 Vamosss, funciona :si: Gracias de nuevo por recordarme la función urldecode ;)

Usuarios habituales

  • eXtreM3
  • m0rG