PukiWikiをEUCからUTF-8に変更


投稿日:2011年9月20日
  • 2
  • 0
  • 3



Facebookのコメント欄を諦め切れないw

前回Facebookプラグインを導入するにあたりEUCの限界を痛感し、そもそも2006年からメジャーアップデートの無い現状を考えれば素直にUTF-8に移行する方が作業性が良いと判断。
現状ページ数450程度、サイト開設から2カ月程度なので、まだダメージは少ないと判断。この程度の量なら…と考えたが、思ったよりも重労働だったw


1.まずはバックアップ

これは絶対必要。出来ればzipファイルなどにまとめて保存しておいて、ミスしてファイルが壊れたときに解凍という復活の呪文を唱えようw


2.こちらを参考にファイルをエンコード

data2utf8.php.txt」という素晴らしいPHPファイルを実行するだけで手軽にUTF-8へ変換できる。(ファイルが無くなることが多いためこちらにも置かせていただく。)

使用法は「data2utf8.php.txt」を「data2utf8.php」へリネーム。
index.php」と同じトップのディレクトリに「data2utf8.php」を追加してブラウザで「http://あなたのサイト/data2utf8.php」と入力し実行するだけだ。

長いファイル名の場合はエラーが出る。当サイトの場合はアクセスカウンターのデータを格納するフォルダである「counter」フォルダのデータを変換中にエラーが出て止まった。

対処法は一度「counter」フォルダのデータを別の場所に移して再度「data2utf8.php」を実行することで「counter」以外は全て変換できた。(変換できなかったファイルは手動でエンコードするか、諦めて自動で作成されるに任せるw)

変換後は各フォルダにUTFファイルの入ったフォルダがあるので、EUCファイルと入れ替えよう。
conv_ts.php.txt」なるタイムスタンプを変更するファイルもあるが9時ずれる程度ということで今回は使用しなかった。

上記PHPを使用するにあたり、いきなりレンタルサーバで使用するのはやめたほうが賢明だ。ミスをしたときのことも考えて「xampp」などを使ってローカル環境で使おう。


3.プラグインもエンコード

上記のPHPではエンコードされないのでテキストエディタの「秀丸」を使い手動でエンコードする。自動で変換してくれるフリーソフトもたくさんあったが、どれを試しても上手く行かなかった。(使い方が悪かったのかもしれない)
さらにエンコードだけでは動かないプラグインもあるので、適宜変更。

sitesearch.inc.phpでの例

(製作者のサポートは終了しているので注意が必要)

20行目あたり

 $target_dir = './wiki';

28行目あたり

 $return_url = '././index.php';

34行目あたり

 $kcode_file = "utf-8";

47行目あたり

$disppage = rawurlencode('サイト内検索'); //検索結果を表示する頁<

78行目あたり

$ret .= '<input type="text" name="WORD" value="サイト内検索" id="mmado">  <input type="submit" value="検索" id="mbotton">';

81行目あたり(これは削除。メニューバーに表示させるためラジオボタンはいらなかった)

$ret .= '<input type="submit" value="検索">';

234行目あたり

$wtarget = '"../../' . $pukiwikidir . '/index.php?'.$UrlFileName.'"';

といった具合にプラグインによって手を加える必要があるものがある。


4.添付ファイルの修正

上記変換ではwikiファイルなどは完璧に変換されたが、添付ファイルを参照できなくなっていた。ファイル数もそれほど無いので「添付ファイルページ」にある「全ページの添付ファイル一覧」を参考にアップロードしなおす。


以上で「UTF-8」化が完了。前回挫折したFacebookのコメント欄も問題なく動作した。
もしも「EUC版」とどちらを使うか迷っている方は初めから「UTF-8」を使うことをお薦めしますw
グローバルスタンダードもコロコロ変わるが現時点では「UTF-8」に分がある。

アクアリウムwiki」こちらでコメント欄ともどもしっかりと動作している。



現在のページを共有する



現在のページに関連する記事


おすすめの記事


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。