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.「データベース」「テーブル」「カラム」単位で文字コードを確認
- 確認コマンド
-- databaseの文字コード確認
show create database [database_name]
-- tableの文字コード確認
show create table [table_name];
サーバ側の文字コードセットは、データベース、テーブル、カラム単位で指定可能。小さな単位での指定が有効となる。ここでいうとカラムに指定した文字コードが優先されるので、文字化けなどの調査を行う際は、テーブル定義も確認する必要がある。