Kurze Antwort
Starten Sie den Client mit der Option --default-character-set=utf8
:
mysql --default-character-set=utf8
Sie können dies in der /etc/mysql/my.cnf
als Standard festlegen Datei.
[mysql]
default-character-set=utf8
Die kurze Antwort hat nicht funktioniert, lesen Sie unten
Der obige Befehl erzwingt den character_set_client
, character_set_connection
und character_set_results
Konfigurationsvariablen utf8
sein .
Um die Werte für alle zeichensatzbezogenen Konfigurationsvariablen zu überprüfen, können Sie Folgendes ausführen:
show variables like '%char%';
Die character_set_database
gibt Ihnen den Zeichensatz der aktuellen Datenbank (Schema), in der Sie sich befinden. Das Schema und die Tabellen werden standardmäßig mit dem im character_set_server
angegebenen Zeichensatz erstellt , es sei denn, es wird explizit im CREATE
angegeben Aussage.
Der character_set_server
kann in der my.cnf
geändert werden Datei:
[mysqld]
character-set-server = utf8
Zusätzlich können Tabellen und Spalten ihren eigenen Zeichensatz haben, der sich von ihrer übergeordneten Tabelle oder ihrem übergeordneten Schema unterscheiden kann. Um die Werte jeder Tabelle und Spalte in einer Datenbank speziell zu überprüfen, siehe diese Antwort:Wie sehe ich, welchen Zeichensatz eine MySQL-Datenbank/Tabelle/Spalte hat?
Wenn Sie den Zeichensatz bestehender Tabellen und Spalten ändern möchten, lesen Sie diese Antwort:Wie konvertiere ich einen kompletten MySQL-Datenbankzeichensatz und eine Kollatierung in UTF-8?
Weitere Informationen zu Verbindungszeichensätzen finden Sie in der Mysql-Dokumentation .
Alles ist auf utf8 eingestellt, aber ich sehe immer noch seltsame Zeichen
Auch wenn alle Zeichensatzvariablen, Tabellen und Spalten auf utf8
gesetzt sind , kann es Fälle geben, in denen Sie seltsame Zeichen auf Ihrem Bildschirm sehen. Zum Beispiel könnte jemand Unicode-Zeichen in einem utf8
geschrieben haben Spalte, über einen Client mit latin1
Verbindung (zum Beispiel durch Ausführen von mysql --default-character-set=latin1
). In diesem Fall müssen Sie die Verbindung zur Datenbank mit demselben Zeichensatz herstellen, mit dem die Werte geschrieben wurden. Sie können sie auch durch die richtige Kodierung abrufen und umschreiben.
HINWEIS :Wie die Kommentare zeigen, ist mysql utf8
Die Codierung ist keine echte und vollständige Implementierung von UTF-8. Wenn eine vollständige Implementierung von UTF-8 benötigt wird, kann man den utf8mb4
verwenden Zeichensatz:
mysql --default-character-set=utf8mb4
Mehr Infos hier:Was ist der Unterschied zwischen utf8mb4- und utf8-Zeichensätzen in MySQL?