Kort svar
Start klienten med muligheden --default-character-set=utf8 :
mysql --default-character-set=utf8
Du kan indstille dette som standard i /etc/mysql/my.cnf fil.
[mysql]
default-character-set=utf8
Det korte svar virkede ikke, læs nedenfor
Kommandoen ovenfor fremtvinger character_set_client , character_set_connection og character_set_results konfigurationsvariabler skal være utf8 .
For at kontrollere værdierne for alle de tegnsætrelaterede konfigurationsvariabler kan du køre:
show variables like '%char%';
character_set_database giver dig tegnsættet for den aktuelle database (skema), som du er i. Skemaet og tabellerne oprettes som standard med det tegnsæt, der er angivet i character_set_server , medmindre det er specificeret eksplicit i CREATE erklæring.
character_set_server kan ændres i my.cnf fil:
[mysqld]
character-set-server = utf8
Derudover kan tabeller og kolonner have deres eget tegnsæt, som kan være forskelligt fra deres overordnede tabel eller skema. For specifikt at kontrollere værdierne for hver tabel og kolonne i en database, se dette svar:Hvordan kan jeg se, hvilket tegnsæt en MySQL-database/tabel/kolonne er?
Hvis du vil ændre tegnsættet for eksisterende tabeller og kolonner, se dette svar:Hvordan konverteres et helt MySQL-databasetegnsæt og -sortering til UTF-8?
Flere oplysninger om forbindelsestegnsæt i mysql-dokumentationen .
Alt er sat til utf8, men jeg ser stadig mærkelige tegn
Selvom alle tegnsætvariabler, tabeller og kolonner er indstillet til utf8 , kan der være tilfælde, hvor du ser mærkelige tegn på din skærm. For eksempel kan nogen have skrevet Unicode-tegn i en utf8 kolonne, gennem en klient med latin1 forbindelse (for eksempel ved at køre mysql --default-character-set=latin1 ). I dette tilfælde skal du oprette forbindelse til databasen med det samme tegnsæt, som værdierne blev skrevet. Du kan også hente og omskrive dem gennem den korrekte kodning.
BEMÆRK :Som kommentarerne påpeger, er mysql utf8 kodning er ikke en sand og fuld implementering af UTF-8. Hvis en fuld implementering af UTF-8 er nødvendig, kan man bruge utf8mb4 tegnsæt:
mysql --default-character-set=utf8mb4
Mere info her:Hvad er forskellen mellem utf8mb4 og utf8 tegnsæt i MySQL?