Skip to content

MySQL のデフォルト文字コードの設定

Posted on:2009年4月30日 at 23:41

バイナリ版などでインストールを行った場合には、デフォルトの文字コードが latin1 のままとなっている場合がある。DB で何かを始める前には、一旦デフォルト文字コードを確認し、マルチバイト文字を扱うたの適切な文字コードに設定しておく。

実は latin1 の状態であっても、UTF-8 を正しく扱えているような場合もある。ただ、これはどこかのタイミングで嵌ることになるので気をつけておいた方がよい。。

MySQL 文字コードの確認

MySQL の show variables コマンドで文字コード関連の変数を確認する。

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 715
Server version: 5.0.45-Debian_1ubuntu3.3-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

上記の結果であれば UTF-8 に設定されており、問題無い。

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

上記の場合には、デフォルト文字コードを変更しておく。

デフォルト文字コードの変更

MySQL の設定ファイルである上記のファイルの内容を変更しておく。

[client]                # add
default-character-set=utf8  # add

[mysql]                     # add
default-character-set=utf8  # add

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

default-character-set=utf8          # add
character_set_server=utf8           # add
skip-character-set-client-handshake # add

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mysqld を再起動する。

# service mysqld restart

再度 MySQL のコマンドで確認してみると、UTF-8 に変更されていることが確認できる。

なお、MySQL のバージョンは、v.5.0.45 になる。