Opdatering:
Kort svar - Du bør næsten altid bruge utf8mb4
tegnsæt og utf8mb4_unicode_ci
sortering.
Sådan ændres databasen:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Se:
-
Aarons kommentar til dette svar Sådan gør du få MySQL til at håndtere UTF-8 korrekt
-
Hvad er forskellen mellem utf8_general_ci og utf8_unicode_ci
-
Konverteringsvejledning:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Oprindeligt svar:
MySQL 4.1 og nyere har et standardtegnsæt UTF-8. Du kan bekræfte dette i din my.cnf
fil, husk at indstille begge klient og server (default-character-set
og character-set-server
).
Hvis du har eksisterende data, som du ønsker at konvertere til UTF-8, dump din database og importer den tilbage som UTF-8 og sørg for:
- brug
SET NAMES utf8
før du forespørger/indsætter i databasen - brug
DEFAULT CHARSET=utf8
ved oprettelse af nye tabeller - på dette tidspunkt skal din MySQL-klient og -server være i UTF-8 (se
my.cnf
). husk at alle sprog du bruger (såsom PHP) også skal være UTF-8. Nogle versioner af PHP vil bruge deres eget MySQL-klientbibliotek, som muligvis ikke er UTF-8-bevidst.
Hvis du ønsker at migrere eksisterende data, skal du huske at tage backup først! Der kan ske en masse mærkelig hakning af data, når tingene ikke går som planlagt!
Nogle ressourcer:
- fuldstændig UTF-8-migrering (cdbaby.com)
- artikel om UTF-8 parathed af php-funktioner (bemærk, at nogle af disse oplysninger er forældede)