レンタルサーバーの『Xserver(エックスサーバー)』にWordPressを設置する際、文字コードを「UTF-8」にてインストールすると、文字化けする。
■解決方法:
サーバーのトップディレクトリ(最新サーバーの場合、○○○.xsrv.jp/)【追記:紛らわしい書き方かもしれません…つまりFTP設定でディレクトリを指定する時「/」とだけして接続した先、ということになるでしょうか】に「php.ini」というファイルを置き、以下の1行を記述する。
mbstring.internal_encoding = UTF-8
テキストエディタでシンプルに上記の一行だけ書いて、ファイル名を「php.ini」として、必ずトップディレクトリに置く。例え同じアカウントで独自ドメインのサイトを複数運用していて(マルチドメイン)、トップディレクトリ以下にドメインごとのフォルダがあったとしてもそれらの上のトップディレクトリに置かないと反映されない。もし既存の独自ドメイン/サブドメインサイトが別の文字コードで運営されているならば、それぞれのディレクトリにさらに、適切に文字コードを指定したphp.iniを置く。
上記によりWordPressを文字コード「UTF-8」で文字化けなくインストールできる。もしインストール時に文字化けしていたとしても再インストールは必要ない。php.iniを設置したら、文字化けしているであろうブログタイトルや記事を打ち直せば即座になおる。
※上記のphp.iniを置く方法は「sv50」以降のサーバ用で、それ以前のサーバは「.htaccess」ファイルで同様に行う。その場合行頭に「php_value 」を付け加える。
■補足:
なぜエックスサーバー(Xserver)では標準状態でUTF-8だと文字化けを起こすのかについては、かき集めた情報によれば以下のようなことによるらしい。
・MySQL(データベース)の文字コードが「EUC-JP」固定
・MySQLのバージョンが古いらしく、ネット上で解説されている各種コマンドが効かない?(SET NAMES utf8等)
・PHPの設定「mbstring.encoding_translation」が初期状態で「On」になっている。めずらしいとのこと。
つまりは、いくらWordPressのインストール時に「UTF-8」を指定しても、データベースに格納される時点で「EUC-JP」になってしまう。従ってその「EUC-JP」のデータが「UTF-8」のWordPress上に読み込まれて文字化けする。
このあたり、技術者ではないのでこれ以上はわからないが、こういうことを知らずにいると「なぜ文字化けするのか」見当が付かずストレスが溜まる。
■追加実験:
上記方法で「UTF-8」でWordPressが文字化けせずにインストールできたことを確認後、試しに「php.ini」の中身を削除して空の状態でアップしても…文字化けしないではないか!下の階層に置いてあったphp.iniをすべて削除してもまだ文字化けしない。なのでさらに「php.ini」ファイルを削除してみたら、文字化けした。
つまりは推測するに、ユーザーのトップディレクトリ「php.ini」があるとサーバーの標準設定がバイパスされる。そしてphp.iniの中身を見る…しかし空なので何もせずに、WordPressのwp-config.phpに記述された「UTF-8」の指定にそって、そのままデータベースにUTF-8のまま読み書きする?
よく分からないが、php.iniの中身が空でもトップディレクトリに置いてあればWordPressをUTF-8で文字化けなく設置できるみたい。
■エックスサーバーについて:
格安・高機能レンタルサーバーとして結構有名?な『エックスサーバー(Xserver)』。私も去年から使っていて、10個ほどの独自ドメインサイトを1つのアカウントで運営している。
無制限機能盛りだくさんのレンタルサーバー - Xserver(エックスサーバー)

容量1.5GBで月額1,050円、マルチドメイン、メールアカウント無制限、スパムフィルター、MySQLデータベース、WordPress等自動インストール、アクセス解析(awstats)などがすべて無料。それまで使ってきたサーバーに比べれば自由度が高くてコストパフォーマンスも高く、それなりに満足しているんだけれど、ブログアプリ等のインストールで必ず選択する「文字コード」については結構悩まされてきた。結論から言うと、「EUC-JP」ならすんなり問題なくインストールが完了する。「UTF-8」だと標準では文字化けが起きる。また「Shift_JIS」だと、WordPressの場合プラグインで不具合が起きることが多い(RSSの読み込みなどで文字コード変換がうまくいかず文字化けしたり)。
また現在、個人的に保留となっている問題はphpの最大メモリ容量 = memory_limitについてだが、エックスサーバーのphpのmemory_limitは、標準で15MBの様子。「Gallery2」という巨大なフォトギャラリーアプリをインストールしようとしたが最低16MB必要で、インストールの時点で警告が出て、インストールは作業は完了したもののその後の動作が不完全。たとえば最近試している「チカッパ!」はなんと50MBも使えるので、Gallery2も問題なくインストールできて動作もしている。
ただその時はphp.iniファイルを下層ディレクトリに入れていたので、今回同様トップディレクトリに置けば反映されるかもしれない。
■参考サイト:
今回の件は無数のサイトを徘徊したが、下記の情報が決定的な情報となった。感謝したい。
「TROUBLE/224 - OpenPNE」
- フリーのSNSアプリ『OpenPNE』のサポートページのようです。
「xserverにUTF-8で設置すると文字化けします」
- WordPress Japanのユーザーフォーラム。
【追記:2008/2/3】
この記事を書いた頃と少し状況が変わってきている?ようです。
以下の記事も参考になると思いますのでメモ。
XserverでのWordpress文字化け解決 旅館業界WEBで稼ぐには(2008/2/2)
v2.2.3をXserverにインストール後、日本語表示がおかしい。 WordPress Japan フォーラム
XserverでWordPressが日本語表示にならない ネット・ライフ(yuuの徒然日記)(2007/12/28)
XsereverでUTF-8のWPを設置できました。
有意義な情報をありがとうございます。
リンクを張らせていただくとともに、
トラックバックもさせていただきました。
お役に立てて幸いです。
マイペースですが、これからも更新していきたいと思います。