Edited at

MySQL 文字コード確認


1.「クライアント」と「サーバ」の文字コードを確認

文字コード設定は、クライアントとサーバそれぞれ持っている


  • 確認コマンド

show variables like '%char%';


結果

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/local/mysql/charsets/ |
+--------------------------+-----------------------------+

項目名
対象(client/server)
説明

character_set_client
client
クライアントがサーバにクエリを送信する際に使用

character_set_results
server
サーバがクライアントにクエリ結果を送る時に使用

character_set_connection
client
クライアントが送ったクエリをサーバが解析する際に使用

character_set_database
server
サーバのデフォルトキャラクタセット。LOAD DATA INFILE文はこの指定が使用される。mysql起動時にcharacter_set_serverの値が適用される。

character_set_server
server
サービス起動時のデフォルトキャラクタセット

character_set_system
-
ファイル名をこのキャラクタセットで扱う

character_sets_dir
-
キャラクタセットを扱う上で必須となるファイルを配置しているディレクトリ


2.「データベース」「テーブル」「カラム」単位で文字コードを確認


  • 確認コマンド

show create table 'table_name';

サーバ側の文字コードセットは、データベース、テーブル、カラム単位で指定可能。小さな単位での指定が有効となる。ここでいうとカラムに指定した文字コードが優先されるので、文字化けなどの調査を行う際は、テーブル定義も確認する必要がある。