Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No distinguir entre palabras con y sin acentos

Estas en el tema de No distinguir entre palabras con y sin acentos en el foro de PHP en Foros del Web. Buenas! Ni siquiera sé como poner el título del tema! Estoy teniendo un problema que ya le dí mil vueltas y no le encuentro la ...
  #1 (permalink)  
Antiguo 09/04/2018, 07:31
 
Fecha de Ingreso: abril-2012
Mensajes: 27
Antigüedad: 6 años
Puntos: 0
No distinguir entre palabras con y sin acentos

Buenas! Ni siquiera sé como poner el título del tema!

Estoy teniendo un problema que ya le dí mil vueltas y no le encuentro la solución, a ver si me pueden ayudar.

Estoy trabajando con na base de datos mysql y php. Me ocurre los siguiente, si hago un SELECT directamente en el motor, me devuelve un resultado, pero el mismo SELECT desde la aplicación otro para el siguiente caso de ejemplo:

SELECT * FROM tabla WHERE descripcion LIKE "%union%"

Cuando ejecuto el SQL directamente en el motor me encuentra todos los registros donde encuentra la cadena "union" y la cadena "unión", pero desde la web solo me trae los registros con "union", es decir no me encuentra aquellas palabras acentuadas.

Ya investigue todo lo que pude sobre los charset, pero realmente no encuentro que puede ser.

En las tablas de mysql utilizo Character Set utf8 y Collation utf8_general_ci
En el html, tengo definido la etiqueta meta <meta charset="utf-8">

¿Alguna sugerencia?
Desde ya muchas gracias

PD:
Utilizo: PHP 5.5.24, MYSQL 5.0.11, APACHE 2.4.12, Windows 7 ->> (XAMPP 5.5.24)

Última edición por locurafragil; 09/04/2018 a las 07:34 Razón: Faltaron datos de las versiones PHP, MYSQL, APACHE y SO
  #2 (permalink)  
Antiguo 09/04/2018, 09:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.273
Antigüedad: 10 años, 4 meses
Puntos: 2641
Respuesta: No distinguir entre palabras con y sin acentos

Verifica el charset de la conexión (off topic en este foro, es tema de programación).
El que tengas UTF8 en ambos lados es bueno, pero si la conexión a la base no se está configurando debidamente, los caracteres acentuados no están llegnado bien a MySQL, y por ende, no está recibiendo lo que supones.

Muevo a PHP, porque el hecho que la query ande bien en directo, implica que el fallo no está en la consulta, sino en el codigo PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/04/2018, 06:11
 
Fecha de Ingreso: abril-2012
Mensajes: 27
Antigüedad: 6 años
Puntos: 0
Respuesta: No distinguir entre palabras con y sin acentos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Verifica el charset de la conexión (off topic en este foro, es tema de programación).
El que tengas UTF8 en ambos lados es bueno, pero si la conexión a la base no se está configurando debidamente, los caracteres acentuados no están llegnado bien a MySQL, y por ende, no está recibiendo lo que supones.

Muevo a PHP, porque el hecho que la query ande bien en directo, implica que el fallo no está en la consulta, sino en el codigo PHP.

Gracias gnzsoloyo!!! Era el charset de la conexión el problema. Si bien la base de datos tenía Charset UTF8 y Data collection utf8_general_ci, no sabía eso.

Para el que no sepa, lo solucioné colocando después de la conexión $db->set_charset('utf8');
FUENTE: http://lineadecodigo.com/php/cambiar-el-charset-en-la-conexion-a-mysql/



La zona horaria es GMT -6. Ahora son las 23:56.