Docker MySQL Chinesischer verstümmelter Code

WBOY
Freigeben: 2023-05-13 17:08:08
Original
1554 Leute haben es durchsucht

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%';
Nach dem Login kopieren

Zu den zeichensatzbezogenen Variablen gehören:

  • character_set_client: Client-Zeichensatz, der vom Client zum Herstellen einer Verbindung mit MySQL verwendet wird
  • Zeichensatz_Verbindung: Verbindungszeichensatz, dh der Zeichensatz zwischen dem Server und dem Client;
  • Zeichensatz_Datenbank: Datenbankzeichensatz, die neu erstellte Datenbank wird gemäß diesem Zeichensatz erstellt;
  • Zeichensatz_Ergebnisse: Ergebniszeichensatz, verwendet für die von der SELECT-Abfrage zurückgegebenen Ergebnisse. Zeichensatz;
  • character_set_server: Server-Zeichensatz, der vom MySQL-Server selbst verwendete Zeichensatz.

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:

  1. Ändern Sie die MySQL-Konfigurationsdatei.

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
Nach dem Login kopieren

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
Nach dem Login kopieren
  1. Ändern Sie den Zeichensatz nach der Verbindung mit MySQL

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 dem Login kopieren

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;
Nach dem Login kopieren

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/
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!