Długo zmagałem się z tym samym problemem. Uruchom to zapytanie, gdy tylko połączysz się z bazą danych, a Twoja aplikacja internetowa wyświetli znaki, które pojawiają się w phpmyadmin:
USTAW NAZWY 'utf8'
Z jakiegoś powodu MySQL jest skonfigurowany w moich systemach, aby zakładać, że dane wejściowe i wyjściowe są zakodowane jako latin1, co oznacza, że gdy wysyłam dane wejściowe utf8, niepoprawnie przechowuje je w bazie danych, ale ponieważ konwersja jest odwrócona dla danych wyjściowych, bałagan jest cofnięty i wyświetla się poprawnie w przeglądarce (z wyjątkiem korzystania z phpmyadmina, który wyświetla go wiernie). Dzieje się tak tylko wtedy, gdy wynikiem konwersji są znaki, które są dozwolone przez zestaw znaków użyty w polu bazy danych, w którym jest przechowywany, więc możesz uzyskać błędy, chyba że zatrzymasz tę konwersję z powyższym zapytaniem.