En la base de datos, si la examinas directamente se guardan los caracteres de forma correcta?
Tienes algún meta indicando la codificación en el html?
Prueba a establecer una cabecera http con header desde php indicando la codificacion
Algo como
En algún lugar se deben de estar corrompiendo los datos, y me da que es de la base de datos, bien las tablas, los campos o la comunicación con ella no se realiza en la codificación adecuada.
Prueba a
establecer el conjunto de caracteres para la conexión a la bd con