sql >> Databasteknik >  >> RDS >> Mysql

MySQL kommandoradsformatering med UTF8

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?



  1. SQL-fråga dynamiskt tabellnamn i FOR

  2. MySQL Query - Registrerar mellan idag och senaste 30 dagarna

  3. Hur lägger du till PostgreSQL Driver som ett beroende i Maven?

  4. 4 sätt att hitta rader som innehåller versaler i MariaDB