Lo de los acentos y eñes ya depende de cómo guardes tu info y del cotejamiento de los campos de tus tablas. Ya dependiendo de eso sabes si puedes mandar el criterio directamente a la búsqueda o si tienes que hacerle algo como un "parche" para que sea capaz de encontrar las coincidencias, por ejemplo, si en tu base de datos tienes el campo apellido en la tabla personas y al guardar el apellido Rodríguez queda así Rodríguez, y si al recibir el criterio de búsqueda el apellido llega tal cual Rodríguez, entonces será necesario poner el código así:
Código PHP:
Ver original $conn->setQuery("SELECT * FROM productos WHERE titulo like '%$criterio%' ");
Cuando la cuestión es porque charset tuviera inconsistencias entonces se pueden usar otras funciones PHP como utf8_encode(), y otras más, si acaso tu página, el cotejamiento de los campos, la configuración de MySQL no fueran constantes. Para decidir qué debes usar es necesario que sepas cómo están guardados tus datos y cómo se recibe el criterio de búsqueda.