Aktualizacja:
Krótka odpowiedź - prawie zawsze powinieneś używać utf8mb4
charset i utf8mb4_unicode_ci
zestawienie.
Aby zmienić bazę danych:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Zobacz:
-
Komentarz Aarona do tej odpowiedzi Jak sprawić, by MySQL poprawnie obsługiwał UTF-8
-
Przewodnik po konwersji:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Oryginalna odpowiedź:
MySQL 4.1 i nowsze mają domyślny zestaw znaków UTF-8. Możesz to zweryfikować w swoim my.cnf
plik, pamiętaj, aby ustawić oba klient i serwer (default-character-set
i character-set-server
).
Jeśli masz istniejące dane, które chcesz przekonwertować na UTF-8, zrzuć bazę danych i zaimportuj ją z powrotem jako UTF-8, upewniając się, że:
- użyj
SET NAMES utf8
przed zapytaniem/wstawieniem do bazy danych - użyj
DEFAULT CHARSET=utf8
podczas tworzenia nowych tabel - w tym momencie twój klient i serwer MySQL powinny być w UTF-8 (zobacz
my.cnf
). pamiętaj, że wszystkie używane języki (takie jak PHP) muszą być również UTF-8. Niektóre wersje PHP będą używać własnej biblioteki klienta MySQL, która może nie być świadoma UTF-8.
Jeśli chcesz przenieść istniejące dane, pamiętaj, aby najpierw wykonać kopię zapasową! Gdy coś nie idzie zgodnie z planem, może się zdarzyć wiele dziwnych cięć danych!
Niektóre zasoby:
- kompletna migracja UTF-8 (cdbaby.com)
- artykuł o gotowości UTF-8 funkcji php (zauważ, że niektóre z tych informacji są nieaktualne)