pukiwiki1.4/tips/mojicode_change の履歴(No.2)


文字コードをEUC-JPからUTF-8にする#

PukiwikiのUTF-8移行手順です。 きっかけはGoogleの不具合でしたが、ソーシャルボタンなどでもEUC-JPだと不便なことが多かったので思いきって移行することにしました。 リダイレクトについても追記しました。

バックアップ#

当然バックアップを取りつつ作業したいので、コピーを作成します。 本番環境で作業してしまうと、誰かがアクセスしてしまいcacheが生成されてしまうので、一度コピーを作成してそこで作業します。

cp -Rp pad.rtwiki.net pad.rtwiki.net.150726utf8

作業後に、本番のpad.rtwiki.netにリネームして切り替えとします。もちろん作業中に編集された内容は巻き戻ってしまいます。

設定の変更#

lib/init.php 「//UTF-8:」を削除 skin/ 「EUC-JP」を変更

他、ファイル内にURLを書いている場合は直す必要がある。 「%2F」や「index.php?」で検索するといいかも。

index.php?%A5%E2%A5%F3%A5%B9%A5%BF%A1%BC%BF%DE%B4%D5%2F ↓ index.php?モンスター図鑑%2F

・pukiwiki.ini ・tool/raregacha.html

PukiWiki/1.4/UTF-8化 手順は参考になりますが、convertcode.inc.phpは動かなかったのでdata2utf8.phpを使います。

ファイルの文字コード変更1#

pluginやlibなどのpukiwikiのファイルを変換。

第一階層にあるもの全て skin/ plugin/ lib/ htmlinsertプラグインを使っている場合はinclude元ファイル

これらのファイルは一度ダウンロードして変換して上書きした。 WindowsだとFCCheckerが便利。文字コードがEUC-JPになっているものだけUTF-8に変換。 その際「~」が「〜」になってしまっていることがあるので、気になるのであれば後で変更する。

ファイルの文字コード変更2#

data2utf8.phpを利用して、wikiのデータ系のファイルの変換を行う。 以下のフォルダ内のファイルが対象。 自分は.htaccessのエラー回避で、ブラウザで実行せずコンソールで行った。

php -f data2utf8.php

「OPEN ERROR」「CONVERT ERROR」が出たら該当するファイルを削除して、再度data2utf8.phpを動かす。 このエラーが起きるファイルを把握しておいて、予め削除しておくと一連の作業にかかる時間はかなり短くなります。

stage 2: complete

が出たら完了。

wiki/ 全て必要なのでそのまま diff/ なるべく残す backup/ なるべく残す cache/ 初期化。entities.datは要変換。bodycacheのデータを置いている場合、.bodyファイルは全て削除。 attach/ 全て必要なのでそのまま counter/ 全削除 trackback/ 未使用

PukiWikiをEUCからUTF-8に変更 | OXY NOTES data2utf8.phpがダウンロードできます。

リダイレクト#

最初は.htaccessで設定しようとしていましたが、パラメータ違いなのでややこしいです。 人気のある上位数十ページのみ設定しようと思っていましたが、下記のやり方だと簡単に全てのページに対応できます。

PukiwikiをEUC→UTF-8移行した後もEUCのURLでアクセスできるようにする - あっきぃ日誌 あっきぃさん、ありがとうございます。

を参考にplugin/read.inc.phpを編集すると、EUC-JPのときのパラメータでリクエストされた際にUTF-8版のページへ301リダイレクトされます。