0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker mysql-sever で日本語を対応させる。(文字化け:[??????????]の修正)

Last updated at Posted at 2024-08-07

はじめに

docker で立てたmysql serverを利用しようとしたところ、日本語が文字化けしたのですが、思っていたより日本語を対応させるのに苦戦し、適格な記事もなかったので備忘録

今回の現象

下記のsqlを実行

select * from work;

出力

+--------+-------------------+------+----------+--------------+
| workid | title             | week | time     | latestpartid |
+--------+-------------------+------+----------+--------------+
|  27259 | ????????????????? | ???? | 23:45:00 | 27259004     |
+--------+-------------------+------+----------+--------------+

完全に文字化けしてます。

本題(解決方法)

docker run

docker run をする時に、 MySQLサーバーのデフォルト文字セットをutf8mb4に設定する必要があります。

指定するオプション

  • --character-set-server=utf8mb4
  • --collation-server=utf8mb4_unicode_ci

 18.png
訳) 多くの設定オプションをフラグとして mysqld に渡すことができる。 これにより、cnf ファイルを必要とせずにコンテナを柔軟にカスタマイズできるようになる。 たとえば、すべてのテーブルのデフォルトのエンコーディングと照合順序をUTF-8(utf8mb4)に変更したい場合は、以下を実行するだけでよい:

詳しくは下記の公式ドキュメント参照

具体的な例

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

オプションは記者の場合のものなので、適宜カスタムしてください。


データベース,テーブルの文字コードを変更する

私の場合は、データベース、テーブルを作成後に以下のコマンドを実行し、うまく動きました。

ALTER DATABASE <データベース名> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE <テーブル名> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4;

結果

下記のsqlを実行

select * from work;

出力

+--------+---------------------------------+---------+----------+--------------+
| workid | title                           | week    | time     | latestpartid |
+--------+---------------------------------+---------+----------+--------------+
|  27259 | かつて魔法少女と悪は敵対していた。 | 木曜配信 | 23:45:00 | 27259004     |
+--------+---------------------------------+---------+----------+--------------+

ちゃんと出てくれました。良かった。

最後に

公式ドキュメントとchat-GPT君の共闘でなんとか解決しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?