Foros del Web » Programando para Internet » PHP »

Interpretación de caracteres GET

Estas en el tema de Interpretación de caracteres GET en el foro de PHP en Foros del Web. Hola a todos Nuevamente estoy teniendo problemas de codificación, esta vez con las variables que recibo por URL, específicamente tildes y eñes para variar... Bueno ...
  #1 (permalink)  
Antiguo 14/05/2012, 08:10
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Interpretación de caracteres GET

Hola a todos

Nuevamente estoy teniendo problemas de codificación, esta vez con las variables que recibo por URL, específicamente tildes y eñes para variar...

Bueno resulta que las variables GET codifican la frase "tíldé eñe" así:

t%EDld%E9%20e%F1e

Y PHP lo interpreta así:

t�ld� e�e

no entiendo por qué lo hace mal

Tengo para variar TODO en UTF-8, archivo php, header de php, hader de html, base de datos, conexion a base de datos, etc.

Espero que puedan ayudarme y dejar de tener tantos problemas de codificación, esto está empezando a desmotivarme...
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #2 (permalink)  
Antiguo 14/05/2012, 08:15
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 5 meses
Puntos: 334
Respuesta: Interpretación de caracteres GET

prueba con las funciones utf8_encode o utf8_decode respectivamente...

PD: no se si ayude con tu problema pero para HTML podrías utilizar entidades y te ahorras miles de problemas de tildes.

htmlspecialchars(urldecode($var));


saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 14/05/2012, 12:49
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años
Puntos: 336
Respuesta: Interpretación de caracteres GET

Gracias Hidek1

probé de todo, utf8_encode(), utf8_decode(), urlencode(), urldecode(), rawurldecode(), rawurlencode(), htmlentities(), html_entity_decode(), htmlspecialchars() y hasta probé usando str_replace() para cambiar los caracteres por su respectivo valor...

Reconfiguré php.ini y apache...

y al final, el problema no estaba ahí... era un problema de javascript, específicamente con la función escape(), a ver si alguien le sirve en el futuro, la función escape() no sirve para utf-8, debe usarse encodeURIComponent().

Tal como dije en el primer post, escape() codifica la frase "tíldé eñe" así:

t%EDld%E9%20e%F1e

que corresponde a 2 caracteres hexadecimales por letra, mientras que encodeURIComponent() usa 2 pares:

t%C3%ADld%C3%A9%20e%C3%B1e

y esto permite reconocer tildes y eñes :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: caracteres, html, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:02.