Esto lo copie de un topico y me funciono de pelos. No recuerdo el usuario pero vale la pena aclarar que no fue mi solucion, pero me sirvio:
Dinos qué versión de Mysql utilizas.
Si usas PHPMyAdmin, dinos y que version tienes, dado que a partir de la version2.5 o algo asi recien posee el COLLATE
Cita: 2) qué cotejamiento usas para la base (deberías poner latin1_spanish_ci)
qué cotejamiento para la tabla donde tienes el campo (deberías poner latin1_spanish_ci) Es decir, tu BS mySQL deberia tener los CHARSET latin1 y COLLATE latin1_spanish_ci, no se si va en ese orden
3) qué cotejamiento para el campo donde escribes 'María'.(deberías poner latin1_spanish_ci)
4) qué cotejamiento usas para el archivo guia.php, que imagino es donde tienes el formulario con un input de tipo text donde escribes el nombre que buscas (debe ser guardado como ISO-8859-1, no como utf-8)
6) Si muestras en ese archivo no creo que haga falta nada más; pero si tienes otro archivo html o php donde muestres el dato, debería ser codificado también como iso-8859-1.
7) No creo que tu servidor funcione con otra codificación, sino que usará ISO-8859-1 por defecto, tanto para la recepción de datos como para la devolución de los datos. No obstante, para por si las moscas, añades tras realizar la conexión y seleccionar la base, mysql_query("SET NAMES 'ISO-8859-1'")
Si tienes todo esto y los meta tags en los archivos PHP y HTML, ya no sé qué puede estar ocurriendo, pues debería, creo, estar funcionando.
Imagino que no estarás usando ninguna función de conversión de tipos, ni el CSS esté cambiando nada en la parte donde introduces el texto...
Espero te sirva, a mi si