Foros del Web » Programando para Internet » PHP »

Carácteres locales

Estas en el tema de Carácteres locales en el foro de PHP en Foros del Web. Hola, Tengo una curioso problema con letras acentuadas o letras españolas como la 'ñ'. En unformulario tengo un campo de texto que pide el apellido ...
  #1 (permalink)  
Antiguo 18/04/2007, 02:18
 
Fecha de Ingreso: abril-2006
Mensajes: 76
Antigüedad: 18 años
Puntos: 0
Carácteres locales

Hola,

Tengo una curioso problema con letras acentuadas o letras españolas como la 'ñ'. En unformulario tengo un campo de texto que pide el apellido a buscar. Luego segun este texto realizo la consulta a la BBDD.

Si buscaba por apellidos como "muñoz" no salian resultados. Al final averigué que algo pasaba con la "ñ". Cuando monto la consulta realizo la siguiente sql:

$sql = "Select * from NO_EMPLEADOS where APELLIDO1 LIKE '%" . $_POST["apellido"] . "%' ORDER BY APELLIDO1,APELLIDO2,NOMBRE";

Esta consulta funciona para todo el texto que no tenga carácteres españoles específicos. Creo php debe transformar letras del tipo 'ñ' o 'ç' a otro carácter i por eso la consulta no devuelve datos.

Lo que no entiendo es que si hago un echo ( $sql ); me pinta la 'ñ' perfectamente, pero no devuelve datos.

Alguien me puede hechar una mano.
Saludos.
  #2 (permalink)  
Antiguo 18/04/2007, 06:34
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Carácteres locales

Qué codificación utiliza tu web y qué codificación utiliza tu base de datos?
En el phpMyAdmin (si lo tienes, claro), te salen las ñ's ?
  #3 (permalink)  
Antiguo 18/04/2007, 09:04
 
Fecha de Ingreso: abril-2006
Mensajes: 76
Antigüedad: 18 años
Puntos: 0
Re: Carácteres locales

Tengo Firebird con charset ISO8859_1. Pero el problema no creo que sea la BBDD. Hize una prueba:

Si hago una consulta a pelo dentro de php funciona:
$sql = "select * from no_empleados where apellido1 like '%ñ%'";
Me salen los empleados con apellido que contiene la 'ñ'.

Pero no me salen si lo hago con la variable del $_POST:
$sql = "select * from no_empleados where apellido1 like '%" . $_POST["apellido"] . "%'";

No devuelve resultados.

Algo pasa si utilizo la variable de $_POST[]. Puede ser que transforme la 'ñ' a un caracter unicode, u otras historias que se me escapan ahora mismo?

Si hago un echo $sql veo la consulta con la 'ñ' perfectamente, pero no la ejecuta correctamente.

Saludos.
  #4 (permalink)  
Antiguo 18/04/2007, 09:51
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Carácteres locales

Prueba a hacer un echo del contenido de la variable $_POST a ver que sale. Utiliza la funcion var_dump para más información.
  #5 (permalink)  
Antiguo 19/04/2007, 03:19
 
Fecha de Ingreso: abril-2006
Mensajes: 76
Antigüedad: 18 años
Puntos: 0
Re: Carácteres locales

el echo de var_dump me dice lo siguiente: string(6) "muñoz".

Pero sigue sin realizar la consulta correctamente.

Saludos.
  #6 (permalink)  
Antiguo 23/04/2007, 08:25
 
Fecha de Ingreso: abril-2006
Mensajes: 76
Antigüedad: 18 años
Puntos: 0
Re: Carácteres locales

Al final he averiguado que al pasar la variable $_POST a la consulta sql de firebird, te transforma la letra 'ñ' en 'ñ'.

La solución la he econtrado haciendo:
$dato = str_replace('ñ','ñ',$dato);
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 19:15.