Uppdatering:
Kort svar - Du bör nästan alltid använda utf8mb4
teckenuppsättning och utf8mb4_unicode_ci
sammanställning.
För att ändra databas:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Se:
-
Aarons kommentar till detta svar Hur man få MySQL att hantera UTF-8 korrekt
-
Vad är skillnaden mellan utf8_general_ci och utf8_unicode_ci
-
Konverteringsguide:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Ursprungligt svar:
MySQL 4.1 och senare har en standardteckenuppsättning UTF-8. Du kan verifiera detta i din my.cnf
fil, kom ihåg att ställa in båda klient och server (default-character-set
och character-set-server
).
Om du har befintliga data som du vill konvertera till UTF-8, dumpa din databas och importera tillbaka den som UTF-8 och se till att:
- använd
SET NAMES utf8
innan du frågar/infogar i databasen - använd
DEFAULT CHARSET=utf8
när du skapar nya tabeller - vid det här laget bör din MySQL-klient och server vara i UTF-8 (se
my.cnf
). kom ihåg att alla språk du använder (som PHP) måste vara UTF-8 också. Vissa versioner av PHP kommer att använda sitt eget MySQL-klientbibliotek, som kanske inte känner till UTF-8.
Om du vill migrera befintliga data kom ihåg att säkerhetskopiera först! Massor av konstig hackning av data kan hända när saker och ting inte går som planerat!
Några resurser:
- fullständig UTF-8-migrering (cdbaby.com)
- artikel om UTF-8-beredskap för php-funktioner (observera att en del av denna information är föråldrad)