Bei der Verwendung von Docker-Containern zum Bereitstellen von MySQL-Datenbanken können manchmal verstümmelte chinesische Zeichen erscheinen. Dies liegt daran, dass der Standardzeichensatz von MySQL Latin1 ist und chinesische Zeichen in UTF-8 codiert werden müssen. In diesem Artikel wird vorgestellt, wie das chinesische verstümmelte Problem von Docker MySQL gelöst werden kann.
1. Überprüfen Sie den aktuellen MySQL-Zeichensatz
Zunächst müssen wir den aktuellen MySQL-Zeichensatz überprüfen. Sie können den folgenden Befehl verwenden, nachdem Sie sich bei MySQL angemeldet haben:
mysql> show variables like '%char%';
Zu den zeichensatzbezogenen Variablen gehören:
2. Ändern Sie den MySQL-Zeichensatz auf UTF-8
Nachdem wir überprüft haben, dass der aktuelle MySQL-Zeichensatz Latin1 ist, müssen wir ihn auf UTF-8 ändern. Dies kann auf zwei Arten erreicht werden:
Fügen Sie in der MySQL-Konfigurationsdatei (normalerweise /etc/my.cnf oder /etc/mysql/my.cnf) die folgenden zwei Zeilen hinzu :
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
Unter diesen wird [client] verwendet, um den Client-Zeichensatz auf UTF-8 festzulegen, und [mysqld] wird verwendet, um den Server-Zeichensatz auf UTF-8 festzulegen. Starten Sie den MySQL-Dienst neu, nachdem die Änderung abgeschlossen ist:
sudo service mysql restart
Wenn Sie die MySQL-Konfigurationsdatei nicht ändern können, können Sie den Zeichensatz nach der Verbindung mit MySQL manuell ändern. Sie können über den folgenden Befehl eine Verbindung zu MySQL herstellen:
mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
Nach erfolgreicher Verbindung führen Sie nacheinander die folgenden Befehle aus, um den Zeichensatz zu ändern:
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
Nachdem die Änderung abgeschlossen ist, beenden Sie MySQL und melden Sie sich erneut an, damit sie wirksam wird.
3. Verwenden Sie den UTF-8-Zeichensatz im Docker-Container
Da MySQL im Docker-Container auf Basis des Images läuft, müssen wir den UTF-8-Zeichensatz im Image festlegen. Das MySQL-Image kann über die folgende Docker-Datei erstellt werden:
FROM mysql:latest ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=test ENV MYSQL_CHARSET=utf8 ENV MYSQL_COLLATION=utf8_general_ci COPY ./init.sql /docker-entrypoint-initdb.d/
Darunter wird der Befehl ENV zum Festlegen von Umgebungsvariablen, MYSQL_CHARSET zum Festlegen des MySQL-Zeichensatzes auf UTF-8 und MYSQL_COLLATION zum Festlegen der Sortierung verwendet utf8_general_ci. Das Initialisierungsskript init.sql wird auch über den COPY-Befehl in das Image kopiert, um es beim Starten des Containers automatisch auszuführen.
4. Zusammenfassung
Durch die oben genannten drei Schritte können wir MySQL im Docker-Container verwenden und den Zeichensatz auf UTF-8 einstellen, um das Problem verstümmelter chinesischer Zeichen zu vermeiden. Wenn Sie mehrsprachige Zeichensätze verarbeiten müssen, müssen Sie natürlich Anpassungen entsprechend der jeweiligen Situation vornehmen. Ich hoffe, dieser Artikel kann für alle hilfreich sein.
Das obige ist der detaillierte Inhalt vonDocker MySQL Chinesischer verstümmelter Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!