Docker コンテナを使用して MySQL データベースをデプロイすると、時々文字化けした中国語が表示されることがあります。これは、MySQL のデフォルトの文字セットが Latin1 であり、中国語の文字は UTF-8 でエンコードする必要があるためです。この記事ではdocker mysqlの中国語文字化け問題の解決方法を紹介します。
1. 現在の MySQL 文字セットを確認する
まず、現在の MySQL 文字セットを確認する必要があります。 MySQL にログインした後、次のコマンドを使用できます:
mysql> show variables like '%char%';
その中で、キャラクタ セット関連の変数は次のとおりです:
2. MySQL 文字セットを UTF-8 に変更する
現在の MySQL 文字セットが Latin1 であることを確認した後、それを UTF-8 に変更する必要があります。これは、次の 2 つの方法で実現できます。
MySQL 構成ファイル (通常は /etc/my.cnf または /etc/) mysql/my.cnf) に次の 2 行を追加します。
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
このうち、[client] はクライアントの文字セットを UTF-8 に設定するために使用され、[mysqld] はサーバーの文字セットを設定するために使用されます。 UTF-8に設定します。変更が完了したら、MySQL サービスを再起動します。
sudo service mysql restart
MySQL 構成ファイルを変更できない場合は、手動で変更できます。 MySQL に接続した後に文字セットを変更します。次のコマンドを使用して MySQL に接続できます:
mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
接続が成功したら、次のコマンドを順番に実行して文字セットを変更します:
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;
変更が完了したら、MySQL を終了します再度ログインして有効にします。
3. Docker コンテナで UTF-8 文字セットを使用する
Docker コンテナ内の MySQL はイメージに基づいて実行されるため、イメージに UTF-8 文字セットを設定する必要があります。 MySQL イメージは、次の Dockerfile を通じて構築できます:
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/
その中で、ENV コマンドは環境変数の設定に使用され、MYSQL_CHARSET は MySQL 文字セットを UTF-8 に設定するために使用され、MYSQL_COLLATION は照合ルールを utf8_general_ci に設定します。初期化スクリプト init.sql も、コンテナーの起動時に自動的に実行されるように、COPY コマンドを通じてイメージにコピーされます。
4. まとめ
上記の 3 つの手順により、Docker コンテナで MySQL を使用し、文字セットを UTF-8 に設定して、中国語の文字化けの問題を回避できます。もちろん、多言語の文字セットを処理する必要がある場合は、特定の状況に応じて調整する必要があります。この記事が皆様のお役に立てれば幸いです。
以上がdocker mysql 中国語のコードが文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。