Актуализация:
Кратък отговор - Почти винаги трябва да използвате utf8mb4
набор от символи и utf8mb4_unicode_ci
съпоставяне.
За да промените базата данни:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Вижте:
-
Коментар на Аарон за този отговор Как да накарайте MySQL да обработва UTF-8 правилно
-
Ръководство за преобразуване:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Оригинален отговор:
MySQL 4.1 и по-нови имат набор от символи по подразбиране UTF-8. Можете да потвърдите това във вашия my.cnf
файл, не забравяйте да зададете и двете клиент и сървър (default-character-set
и character-set-server
).
Ако имате съществуващи данни, които искате да конвертирате в UTF-8, изхвърлете базата си данни и я импортирайте обратно като UTF-8, като се уверите:
- използвайте
SET NAMES utf8
преди да направите заявка/вмъкнете в базата данни - използвайте
DEFAULT CHARSET=utf8
при създаване на нови таблици - в този момент вашият MySQL клиент и сървър трябва да са в UTF-8 (вижте
my.cnf
). не забравяйте, че всички езици, които използвате (като PHP), също трябва да бъдат UTF-8. Някои версии на PHP ще използват собствена MySQL клиентска библиотека, която може да не е наясно с UTF-8.
Ако искате да мигрирате съществуващи данни, не забравяйте първо да архивирате! Може да се случи много странно нарязване на данни, когато нещата не вървят по план!
Някои ресурси:
- завършена миграция на UTF-8 (cdbaby.com)
- статия за готовност за UTF-8 на php функции (обърнете внимание, че част от тази информация е остаряла)