Aktualizace:
Krátká odpověď – Téměř vždy byste měli používat utf8mb4
znaková sada a utf8mb4_unicode_ci
řazení.
Chcete-li změnit databázi:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Viz:
-
Aaronův komentář k této odpovědi Jak na to zajistit, aby MySQL správně zpracovávalo UTF-8
-
Průvodce převodem:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Původní odpověď:
MySQL 4.1 a vyšší má výchozí znakovou sadu UTF-8. Můžete si to ověřit v my.cnf
soubor, nezapomeňte nastavit obojí klient a server (default-character-set
a character-set-server
).
Pokud máte existující data, která chcete převést na UTF-8, vypište databázi a importujte ji zpět jako UTF-8 a ujistěte se, že:
- použijte
SET NAMES utf8
před dotazem/vložením do databáze - použijte
DEFAULT CHARSET=utf8
při vytváření nových tabulek - V tuto chvíli by měl být váš klient a server MySQL v UTF-8 (viz
my.cnf
). Pamatujte si, že všechny jazyky, které používáte (například PHP), musí být také UTF-8. Některé verze PHP budou používat vlastní klientskou knihovnu MySQL, která nemusí znát UTF-8.
Pokud chcete migrovat existující data, nezapomeňte je nejprve zálohovat! Když věci nejdou podle plánu, může dojít k mnoha podivným sekáním dat!
Některé zdroje:
- úplná migrace UTF-8 (cdbaby.com)
- článek o připravenosti funkcí PHP na UTF-8 (všimněte si, že některé z těchto informací jsou zastaralé)