No sé dónde te aparecen los errores, pero si es que tienes los datos en MySQL tendrías que verificar si realmente en las tablas están o no correctamente, porque podrían estar bien en las tablas de la base de datos y mal a la hora de mostrarlos en una página web, por ejemplo.
El error que compartes no es muy claro. En realidad parece que estás haciendo conexiones con UTF8 pero luego menciona otros juegos de caracteres y no se ve bien qué es lo que tienes en tu sistema.
Yo te diría que si el problema es desde MySQL lo podrías verificar haciendo una conexión con MySQL desde terminal, por ejemplo, que creo que sería la opción más segura para saber si el problema es en las tablas. Si ahí los datos los ves bien, entonces estás en el mejor escenario posible, porque lo más complicado sería cambiar los datos de la base de datos. Si los datos los ves mál en MySQL, entonces tienes los acentos corruptos y no sabría ayudarte. Posiblemente si importas los datos de nuevo con otro programa o con el archivo de origen en otra codificación te funcionará.
Luego tendrás que verificar cómo muestras los datos.
No debería darte problemas el escribir con acentos en PHP, ya que no hay ningún problema con ellos.
El truco consiste en utilizar una codificación de caracteres de UTF-8 en los archivos PHP. si los codificas con UTF8 el servidor los enviará con UTF8 y ya solo te quedaría indicar en el html en la etiqueta del head que el juego de caracteres del archivo es UTF8.
Esa es una etiqueta estándar de HTML5 con la que empiezan todos los documentos HTML. en cualquier documento básico del manual de HTML podrás encontrarlo.
El problema te puede surgir cuando estás utilizando una codificación de caracteres en el archivo y estás declarando una codificación de caracteres distinta en el código HTML. Verifica que no ocurra eso.
Además verifica que estés realizando una conexión con la base de datos en el charset que tengas la base de datos. Revisa esta documentación de PHP sobre mysqli_set_charset.