sql >> Database teknologi >  >> RDS >> Mysql

MySQL kommandolinjeformatering med UTF8

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?



  1. Forskellen mellem multi-sætning tabel-værdisatte funktioner og inline tabel-værdi-funktioner i SQL Server

  2. Geo-søgning (afstand) i PHP/MySQL (ydelse)

  3. Forespørg kun de første data fra en tabel

  4. Sådan konfigureres AppArmor til PostgreSQL og TimescaleDB