Ese tema se resuelve en PHP, no en la base.
La tabla de la base puede estar perfectamente definida, pero en PHP la construcción de la scadenas a almacenar se resuelve en el script de PHP, y si eso ya llega mal de entrada, no lo puede corregir la base.
Es muy habitual que le digas al PHP que el header es UTF-8, pero cuando creas la cadena del INSERT también debes, al mismo tiempo, usar las funciones necesarias en PHP para que la cadena quede perfectamente escrita. Esto se suele hacer con utf_encode(), y en ocasiones hay que usar htmlentities().
Estos temas no son asunto de la base, sino de la programación de los scripts en tu web, por lo que te recomiendo consultar el asunto en el
Foro de PHP, que es donde se tratan.