普通に Web ページを見たりメールを使ったりしてる分にはまるでキニシナイ文字コードですが、XOOPS や WordPress などを設置するとなると、とたんに気になる存在に。
ここ数日その辺でジタバタしてたのでメモ。ツッコミ大歓迎です。
そして当然ですが asis でよろしく。
最初に前提ですが、サーバは☆さくらインターネット☆
です。Perl はもちろんプランによっては php と MySQL も使えます。Python なんてマニアックなのまで使えるんですが…使ったことはありません。
まず使う文字コードについてですが、XOOPS は EUC を使います。まずはこれが確実に使えることが前提。なので、そのための設定といったん EUC でインストールした WordPressME(2.0.1) を UTF-8 へ変更する手順です。
まずは php.ini の設定。とはいえ、はっきり言ってよくわからないので最初は php マニュアルの mbstring に書かれている設定をそのままコピーして貼り付けました。が、それだと最初から UTF-8 でインストールした WordPressME も表示がおかしくなったので、XOOPS がおかしくならない程度に削ってみました。
;; 出力バッファリングを無効にする
output_buffering = Off
;; デフォルトの言語を日本語にする
mbstring.language = Japanese
;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On
;; 無効な文字を出力しない
mbstring.substitute_character = none
結局こんな感じに。これだとマイアルバムで画像といっしょに題名と説明を入力しても化けません。文字数が少なすぎると化けますが。というわけで XOOPS 側は終了。
この状態だと最初から UTF-8 でインストールすれば WordPressME も普通に動いてくれます。ですが、私は最初 EUC でインストールしたので EUC → UTF-8 へ変更します。基本の手順は
WordPressの文字コードをUTF-8に for ME1.5
で紹介されているとおりです。そしてデータベースに格納されているデータ(過去ログ)が文字化けて表示されるのも紹介されているとおり。データが文字化けるのは EUC で格納されているからですので、これを UTF-8 へ変換します。
が、私の場合データベース全体の文字コードを変更するとエラーが出てしまいました。エラーメッセージから推測すると権限関係でトラブってる様子。というわけでその辺の情報を格納してそうな wp_options 以外をエクスポートして文字コードを変換。変換したファイルから書き戻したらエラーは消えてくれました。きっとオプションは触るなってことなんでしょう。(!?
EUC への変換はサクラエディタというのを使いました。ファイルを開いてそのまま名前を付けて保存。そのときに文字コードを選択すればOKです。wp-config.php にも文字コードを指定するのをお忘れ無く。あとはデータベースをエクスポートするときに「DROP TABLE」を追加することぐらいでしょうか。データベース操作はあまり自信ないです。(^_^;
以上、自分用メモといつか誰かの参考になれば。と、しつこいですがツッコミ大歓迎です。