at_yasu's blog

ロード的なことを

my.cnfと多言語化

wordpressインストール時にハマったのでメモ。


wordpressは、utf8で記事とかを保存するけど、mysqlのインストール時にujisとかにしてると文字化け起こす。

my.cnfの[mysqld]セクションに、default-character-set=utf8を追加してデータベース再構築。下記は、再構築した時のログ。

mysql> show create database wordpress;
+-----------+--------------------------------------------------------------------+
| Database  | Create Database                                                    |
+-----------+--------------------------------------------------------------------+
| wordpress | CREATE DATABASE `wordpress` /*!40100 DEFAULT CHARACTER SET ujis */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> drop database wordpress;
Query OK, 10 rows affected (0.04 sec)

mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> show create database wordpress;
+-----------+--------------------------------------------------------------------+
| Database  | Create Database                                                    |
+-----------+--------------------------------------------------------------------+
| wordpress | CREATE DATABASE `wordpress` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 

そして、再度インストール。orz

参考: mysql 10298 Re: osx_utf8

追記:でも、もじばけよる・・・orz

追記その2:どうも、mysqlへのInput/Output周りがItalicのままみたい。

でもって、WordPressのインストールと文字化け対応に書いてある対応をそのまま適応。PHPドキュメントあたりを見ても対策わかんなかった。多分、MySQLまわりに書いてるんだろーなー。ちょっと探してみよ。

追記その3:うーん、

#サーバ設定
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

の設定が一番楽かなぁ・・・サーバ側の設定というのが厭だなぁ・・・

セッション毎に、「SET NAME utf8;」をやるのも良いけど、何かスマートじゃない。サーバの設定でやるのも良いけどレンタル鯖の時困るし、「SET NAME utf8;」だとWordPressをアップデートしちゃうと毎回書き直さなきゃならないのが厭だしなぁ・・困った。

MYSQLのドキュメント: 第9章 各国キャラクタセットと Unicode