2014年1月7日火曜日

MySQL の文字コードを UTF-8 に統一する

WordPress プラグインから MySQL へ日本語を書き込もうとした際に以下のようなエラーが出現。

WordPress database error: [Incorrect string value: '\xE3\x82\xAD\xE3\x83\xBC...' for column ...]

原因は MySQL の文字コードが一部 latin1 となっていたため。

まず、MySQL の設定ファイルでデフォルトの文字コードを UTF-8 に設定する。
Cent OS の場合、
# vi /etc/my.cnf
[mysqld]
character-set-server = utf8

既に設定されている文字コードも変更。
# mysql -u root -p
[パスワード]

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysql> set character_set_database = utf8;
mysql> set character_set_server = utf8;
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/ |
+--------------------------+----------------------------+

mysql> quit;


以上で日本語でも書き込めるようになった。

0 件のコメント:

コメントを投稿