Chciałbym tylko podać więcej szczegółów na temat rozwiązania proponowanego przez vartec który jest (w zależności od instalacji MySQL) najbardziej poprawnym rozwiązaniem Twojego problemu. Przede wszystkim problem z zestawem znaków / kodowaniem w MySQL jest dość złożonym tematem, który jest szeroko omawiany w podręczniku MySQL Rozdział 9.1 „Obsługa zestawów znaków” . W twoim przypadku szczególnie 9.1.4. „Zestawy znaków połączenia i sortowanie” będzie najbardziej odpowiedni.
Krótko mówiąc:MySQL musi wiedzieć, jakiego zestawu znaków / kodowania oczekuje aplikacja kliencka (mówiąc z perspektywy bazy danych, czyli skryptu PHP), ponieważ transkoduje wszystkie dane ciągu znaków z wewnętrznego zestawu znaków / kodowania zdefiniowanego na serwerze, na poziomie bazy danych, tabeli lub kolumny do zestawu znaków połączenia / kodowania. Używasz UTF-8 po stronie klienta, więc musisz poinformować MySQL, że używasz UTF-8. Odbywa się to za pomocą polecenia MySQL SET NAMES 'utf8'
które należy wysłać jako pierwsze zapytanie po otwarciu połączenia. W zależności od instalacji i biblioteki klienta MySQL, której używasz w skrypcie PHP, można to zrobić automatycznie przy każdym połączeniu.
Jeśli używasz PDO, wystarczy ustawić parametr konfiguracyjny
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
Używanie mysqli do zmiany zestawu znaków / kodowania klienta jest jeszcze prostsze:
$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");
Mam nadzieję, że pomoże to uczynić całość bardziej zrozumiałą.