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

Formattazione della riga di comando MySQL con UTF8

Risposta breve

Avvia il client con l'opzione --default-character-set=utf8 :

mysql --default-character-set=utf8

Puoi impostarlo come predefinito in /etc/mysql/my.cnf file.

[mysql]
default-character-set=utf8

La risposta breve non ha funzionato, leggi sotto

Il comando sopra forza il character_set_client , character_set_connection e character_set_results le variabili di configurazione devono essere utf8 .

Per controllare i valori di tutte le variabili di configurazione relative al charset puoi eseguire:

show variables like '%char%';

Il character_set_database fornisce il set di caratteri del database (schema) corrente in cui ti trovi. Lo schema e le tabelle vengono creati per impostazione predefinita con il set di caratteri specificato nel character_set_server , a meno che non sia specificato esplicitamente in CREATE dichiarazione.

Il character_set_server può essere modificato in my.cnf file:

[mysqld]
character-set-server = utf8

Inoltre, tabelle e colonne possono avere il proprio set di caratteri che potrebbe essere diverso dalla tabella o dallo schema padre. Per controllare in modo specifico i valori di ciascuna tabella e colonna in un database, vedere questa risposta:Come faccio a vedere quale set di caratteri è un database/tabella/colonna MySQL?

Se desideri modificare il set di caratteri di tabelle e colonne esistenti, consulta questa risposta:Come convertire un intero set di caratteri e regole di confronto del database MySQL in UTF-8?

Maggiori informazioni sui set di caratteri di connessione nella documentazione mysql .

Tutto è impostato su utf8, ma vedo ancora caratteri strani

Anche se tutte le variabili, le tabelle e le colonne dei set di caratteri sono impostate su utf8 , potrebbero esserci casi in cui vedi caratteri strani sullo schermo. Ad esempio, qualcuno potrebbe aver scritto caratteri Unicode in un utf8 colonna, tramite un client con latin1 connessione (ad esempio eseguendo mysql --default-character-set=latin1 ). In questo caso è necessario connettersi al database con lo stesso set di caratteri con cui sono stati scritti i valori. Puoi anche recuperarli e riscriverli attraverso la codifica corretta.

NOTA :Come sottolineano i commenti, mysql utf8 la codifica non è una vera e completa implementazione di UTF-8. Se è necessaria un'implementazione completa di UTF-8, è possibile utilizzare utf8mb4 set di caratteri:

mysql --default-character-set=utf8mb4

Maggiori informazioni qui:Qual ​​è la differenza tra i set di caratteri utf8mb4 e utf8 in MySQL?