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?