Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Befehlszeilenformatierung mit UTF8

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?