ホームページ  >  記事  >  運用・保守  >  docker mysql 中国語のコードが文字化けする

docker mysql 中国語のコードが文字化けする

WBOY
WBOYオリジナル
2023-05-13 17:08:081639ブラウズ

Docker コンテナを使用して MySQL データベースをデプロイすると、時々文字化けした中国語が表示されることがあります。これは、MySQL のデフォルトの文字セットが Latin1 であり、中国語の文字は UTF-8 でエンコードする必要があるためです。この記事ではdocker mysqlの中国語文字化け問題の解決方法を紹介します。

1. 現在の MySQL 文字セットを確認する

まず、現在の MySQL 文字セットを確認する必要があります。 MySQL にログインした後、次のコマンドを使用できます:

mysql> show variables like '%char%';

その中で、キャラクタ セット関連の変数は次のとおりです:

  • character_set_client: クライアント キャラクタ セット、接続するクライアントです。使用される文字セット;
  • character_set_connection: 接続文字セット、つまりサーバーとクライアント間の文字セット;
  • character_set_database: データベース文字セット、新しく作成されたデータベースはこの文字セットに基づく必要があります Create;
  • character_set_results: 結果文字セット、SELECT クエリによって返された結果で使用される文字セット;
  • character_set_server: サーバー文字セット、によって使用される文字セットMySQL サーバー自体。

2. MySQL 文字セットを UTF-8 に変更する

現在の MySQL 文字セットが Latin1 であることを確認した後、それを UTF-8 に変更する必要があります。これは、次の 2 つの方法で実現できます。

  1. MySQL 構成ファイルを変更する

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
  1. MySQL に接続した後に文字セットを変更します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。