MySQLの文字コードなどを調査するのに便利なコマンドです。
「MySQLで文字化けする」なんて時に使えるかもしれません…
文字コードをさくっと確認
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.43, for Win64 (x86_64)
Connection id: 44
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.6.43-log MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: cp932
Conn. characterset: cp932
TCP port: 3306
Uptime: 21 min 41 sec
Server characterset: MySQLサーバーの文字コード
Db characterset: DB作成時の文字コード
Client characterset: クライアントの文字コード
Conn. characterset: コネクションの文字コード
環境変数から確認
mysql> SHOW VARIABLES like "char%";
+--------------------------+---------------------------+
| Variable_name | Value |
+--------------------------+---------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL\share\charsets\ |
+--------------------------+---------------------------+
character_set_client:クライアント側の文字コード
character_set_connection:クライアントから受けたSQLを変換
character_set_database:データベースで使用される文字
character_set_filesystem:ファイルシステムの文字セット
character_set_results:クライアントに返す時の文字コード
character_set_server:サーバーのデフォルト文字コード
character_set_system:識別子を格納するために使用される文字コード
character_sets_dir:文字セットがインストールされている場所
コレクション(照合)を確認
mysql> SHOW VARIABLES like "coll%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | cp932_japanese_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-------------------+
collation_connection:接続文字セットの照合順序
collation_database:デフォルトデータベースで使用される照合
collation_server:サーバーのデフォルトの照合順序
データベースの文字コード確認
既に作成してあるデータベースの文字コードを確認する。
mysql> SHOW CREATE DATABASE test;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
データベース名testの文字コードはutf8であることがわかる。
ちなみに、DB作成時に文字コードを指定するには「CHARCTER SET」を付ける。
CREATE DATABASE db1 CHARACTER SET utf8;
テーブルの文字コード確認
既に作成してあるテーブルの文字コードを確認する。
mysql> SHOW CREATE TABLE test;
+-------+-----------------------------+
| Table | Create Table |
+-------+-----------------------------+
| test | CREATE TABLE `test` (
`no` int(11) DEFAULT '0',
`name` varbinary(100) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------+
テーブル名testの文字コードはCHARSET=utf8でutf8であることがわかる。
まとめ
MySQLの文字コードはいろんなところにあります。
文字化けが起こったら1つ1つどうなっているか調べなくてはいけません。
mysql8.0.1からはutf8mb4がデフォルトになったようです。