13
Nov 2018
by
酒井 莉子
はじまり
ローカル環境を立ち上げる際、DockerのMySQLイメージを使いました。
ところがアプリケーションを起動してみると、ところどころ文字化けが発生して困りました。
しらべる
MySQLの文字コードが適切か確認します。
mysql> show variables like '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec)
MySQLシステム変数値には、デフォルトでlatin1が指定されていました。
今回は、とりあえずUTF-8を設定できれば解決できそうです。
かいけつ
https://hub.docker.com/_/mysql/
The default configuration for MySQL can be found in /etc/mysql/my.cnf
今回は上記cnfファイルを編集しました。
docker container内のファイルへアクセスします。
$ docker exec -ti joseph57 bash root@5f12c3a4afe5:/# root@5f12c3a4afe5:/# vi etc/mysql/my.cnf
そしてこんな感じで指定しました。
[mysqld] character-set-server=utf8 [mysql] default-character-set=utf8
この状態で、もう一度システム変数確認すると、utf8がセットできたみたいです。
mysql> show variables like ‘%char%‘; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec)
おしまい
イカ、時間があるときに調べたいと思います
- なぜUTF8なの
日本語はマルチバイトなのは知ってるけど、マルチバイトって他にもあるはず - 各Variable_nameの意味とか
一部だけutf8にしただけだと文字化け解決しなかったから、全部utf8にしたら解決したよ、みたいな感じなので - cnfファイル編集以外にも解決できる方法がある
compose管理しているプロジェクトは、utf8とか気にしなくても快適な理由がある
所要時間(45ふんくらい)