Kort svar
Starta klienten med alternativet --default-character-set=utf8 :
mysql --default-character-set=utf8
Du kan ställa in detta som standard i /etc/mysql/my.cnf fil.
[mysql]
default-character-set=utf8
Det korta svaret fungerade inte, läs nedan
Kommandot ovan tvingar fram character_set_client , character_set_connection och character_set_results konfigurationsvariabler ska vara utf8 .
För att kontrollera värdena för alla teckenuppsättningsrelaterade konfigurationsvariabler kan du köra:
show variables like '%char%';
character_set_database ger dig teckenuppsättningen för den aktuella databasen (schemat) som du befinner dig i. Schemat och tabeller skapas som standard med den teckenuppsättning som anges i character_set_server , såvida det inte uttryckligen anges i CREATE uttalande.
character_set_server kan ändras i my.cnf fil:
[mysqld]
character-set-server = utf8
Dessutom kan tabeller och kolumner ha sin egen teckenuppsättning som kan skilja sig från deras överordnade tabell eller schema. För att specifikt kontrollera värdena för varje tabell och kolumn i en databas, se detta svar:Hur ser jag vilken teckenuppsättning en MySQL-databas/tabell/kolumn är?
Om du vill ändra teckenuppsättningen för befintliga tabeller och kolumner, se detta svar:Hur konverterar man en hel MySQL-databas teckenuppsättning och sortering till UTF-8?
Mer information om anslutningsteckenuppsättningar i mysql-dokumentationen .
Allt är inställt på utf8, men jag ser fortfarande konstiga tecken
Även om alla teckenuppsättningsvariabler, tabeller och kolumner är inställda på utf8 , kan det finnas fall där du ser konstiga tecken på skärmen. Till exempel kan någon ha skrivit Unicode-tecken i en utf8 kolumn, genom en klient med latin1 anslutning (till exempel genom att köra mysql --default-character-set=latin1 ). I det här fallet måste du ansluta till databasen med samma teckenuppsättning som värdena skrevs. Du kan också hämta och skriva om dem med rätt kodning.
OBS :Som kommentarerna påpekar, mysql utf8 kodning är inte en sann och fullständig implementering av UTF-8. Om en fullständig implementering av UTF-8 behövs kan man använda utf8mb4 teckenuppsättning:
mysql --default-character-set=utf8mb4
Mer info här:Vad är skillnaden mellan utf8mb4 och utf8 teckenuppsättningar i MySQL?