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?