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?