Así que me puse a buscar y después de encontrar comentarios buenísimos de gente por los foros puedo hacer un resumen de todo lo necesario cuando nos ocurre un problema de estos (id haciendo y testeando si ya funciona todo bien paso a paso).
Guía paso a paso para solucionar el problema de los acentos y eñes
- Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en
utf8_spanish_ciy el cotejamiento de las tablas en
utf_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'");(Para MsSQLi escribe $acentos = $db->query("SET NAMES 'utf8'"); ) - Quita el
DefaultCharsetdel Apache o modifícalo - Como última y desesperada opción, quita todos los
htmlentities();y sustitúyelo por otro parser para ‘sanitizar’ los datos.
fuente:
http://xaviesteve.com/354/acentos-y-enes-aparecen-mal-a%C2%B1-en-php-con-mysql-utf-8-iso-8859-1/#comment-1189