J'ai longtemps lutté avec le même problème. Exécutez cette requête dès que vous vous connectez à la base de données et votre application Web affichera les caractères tels qu'ils apparaissent dans phpmyadmin :
FIXER LES NOMS 'utf8'
Pour une raison quelconque, MySQL est configuré sur mes systèmes pour supposer que l'entrée et la sortie sont codées en latin1, ce qui signifie que lorsque je l'envoie en entrée utf8, il la stocke de manière incorrecte dans la base de données, mais comme la conversion est inversée pour la sortie, le désordre est annulé et il s'affiche correctement dans le navigateur (sauf lors de l'utilisation de phpmyadmin, qui l'affiche fidèlement). Cela n'est vrai que lorsque la conversion aboutit à des caractères autorisés par le jeu de caractères utilisé dans le champ de base de données où il est stocké, vous pouvez donc obtenir des erreurs à moins que vous n'arrêtiez cette conversion avec la requête ci-dessus.