文字コード関連の話。ここ数年文字コードの話ってあるけどさなかなか統一されないよねっていうことと
設定箇所がまだ乱立してるのが面倒くさい。
今だとPHP+apache+linux+mysqlの4つそれぞれせってしないといけないもんね。
んで今回も少しだけとまどったわけなのです。ほんとにちょっとだけよ。
まぁ、そのときの状態。
①HTTPの入力・出力・内部処理はUTF-8で画面出力自体は問題なく表示される。
ツーことはDBには同じ文字コードで入っているはず。
②コンソール上でクライアント動かしてSQL打っても表示されない。
ツーことはクライアントの設定かな
あ、それですね。
まずはDBの文字コード確認。
mysql> SHOW CREATE DATABASE testdb;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| testdb| CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
クライアントはどうか
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1|
| character_set_connection | latin1|
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1|
| character_set_server | latin1|
| character_set_system | utf8 |
+--------------------------+--------+
7 rows in set (0.00 sec)
グーグルちゃんのおかげで設定すべき箇所みつけました。
# char set
default-character-set = utf8
# サーバのエンコードを引き継ぐらしい
skip-character-set-client-handshake
設定後の確認
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| 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 |
+--------------------------+--------+
7 rows in set (0.00 sec)
はいおk