somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【MySQL】文字コードの設定と確認

何回も書いているようでいないような文字コードの確認方法です。

存在する文字セットと照合参照

確認の前に、存在するものを確認するコマンドです。

show character set;
show collation;

status

現在の設定を表示するコマンドです。以下実行結果です。

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.5.8, for Win32 (x86)

Connection id:          16
Current database:       blogsymfony2
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.5.8 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    sjis
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 13 hours 20 min 9 sec

Threads: 2  Questions: 526  Slow queries: 0  Opens: 86  Flush tables: 1  Open tables: 0 Queries per
 second avg: 0.10
--------------

variables

mysqlの変数設定の中から文字コード関係を見ます。以下実行結果です。

mysql> show variables like "char%";
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8                           |
| character_set_connection | utf8                           |
| character_set_database   | sjis                           |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                           |
| character_set_server     | latin1                         |
| character_set_system     | utf8                           |
| character_sets_dir       | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

ついでに照合参照も見ます。以下実行結果です。

mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | sjis_japanese_ci  |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

set

こちらは逆に設定するためのコマンドです。

set names charset_name [collate collation_name]

-- 以下を実行したことと同様
set character_set_client     = charset_name;
set character_set_results    = charset_name;
set character_set_connection = charset_name;

-- collateを指定していない場合、
-- collation_connectionは、character_set_connectionに対応するデフォルト照合参照となる
set character set charset_name

-- 以下を実行したことと同様
set character_set_client  = charset_name;
set character_set_results = charset_name;
set collation_connection  = @@collation_database; -- collation_databaseと同じ値に設定する

変数を指定

存在する変数を指定するだけです。

set character_set_database = charset_name