Hola:
Yo estoy en un problema similar. Te digo la información que he recopilado por si te sirve de ayuda y después expongo mi problema:
1) Además de tener las páginas en utf-8, la base de datos también debes tenerla en utf-8 (si utilizas phpMyAdmin, ve a Operaciones y en cotejamiento señala utf8_unicode_ci) y también las celdas de las tablas que utilices.
2) Es posible que tu servidor tenga puesto por defecto la codificación iso-8859-1, si no pueden cambiártela, sube un fichero con el nombre .htaccess al directorio raíz del web que contenga la directiva: AddDefaultCharset utf-8
3) Justo después de hacer la consulta a la base de datos, añade la siguiente línea:
Código PHP:
mysql_query ("SET NAMES 'utf8'");
Se supone que con esto debería funcionar, a mí no me funciona, pienso si estaré poniendo algo mal y no encuentro el qué, me sigue saliendo el típico rombito con la interrogación en el centro cuando hay algún acento, dejo el código a ver si alguien ve algún error, desde ya, gracias:
Código PHP:
$conn = db_connect();
$query = "
SELECT *
FROM paginas
WHERE id_pagina='1'
";
mysqli_query ("SET NAMES 'utf8'");
$result = @$conn->query($query);
¡¡¡¡SOLUCIONADO!!!!
Me faltaba poner la conexión en la consulta, en mi caso:
Código PHP:
mysqli_query ($conn, "SET NAMES 'utf8'");
peconrrixico, pruébalo a ver si a ti también te funciona.
Vaya! no funciona bien del todo, ahora sube mal los caracteres a phpMyAdmin reconvirtiéndolos y con el consecuente desastre
Ahora sí, arreglado.
Mi problema era que solo había puesto la línea
mysqli_query ($conn, "SET NAMES 'utf8'"); a la hora de que mostrara los datos pero no a la hora de subirlos a la base de datos.
Suerte!