Yo he sido uno de esos a los que les ha pasado y que se ha vuelto loco probando una y mil soluciones de las que se muestran por internet, hasta el día que di con el blog de Xavi Esteve. En él encontré la solución a todos mis problemas con las ñ y acentos en php y mysql. Os trascribo tal cual lo que Xavi dice que hay que hacer porque a mi ha sido lo único que me ha funcionado al 100%.
- Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en
utf8_spanish_ci
y el cotejamiento de las tablas enutf_unicode_ci
(más tarde en Operations > Collation de phpMyAdmin se puede cambiar) - Pon en el
<head>
de todos los archivos HTML:<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:
header("Content-Type: text/html;charset=utf-8");
- Al crear la conexión de PHP con MySQL, envía esta consulta justo tras la conexión:
mysql_query("SET NAMES 'utf8'");
Tras esto sólo me queda agradecer una vez más a Xavi Esteve esta gran aportación de la que os dejo el enlace
http://xaviesteve.com/354/acentos-y-enes-aparecen-mal-a%C2%B1-en-php-con-mysql-utf-8-iso-8859-1/