Nibbleblogのバックアップ方法

このNibbleblogでの設定や投稿記事・ページのバックアップは簡単で、FTPクライアントで/contentディレクトリのみサーバーからローカルへ差分ダウンロード(新しいファイルだけ上書きダウンロード)すれば良いようだ。このあたりの構造が良く考えて作られているので、Nibbleblogには感心している。しかし、文字コードの扱いに問題があることが判明した。

Nibbleblogの文字コード問題

バックアップした設定や投稿記事・ページの各XMLファイルをローカルで開いてみると、中身の日本語が文字化けしているのが心配な点。PHPdefault_charsetはUTF-8だし、mbstringの設定をいろいろ変更してみたが(最終的には以下.htaccessファイルのとおり)、この設定が原因とは思えない。バグ?

php_value date.timezone Asia/Tokyo
php_value mbstring.language Japanese
php_value mbstring.http_input pass
php_value mbstring.http_output pass
<IfModule mod_mime.c>
  AddCharset utf-8 .php .css .js .txt .xml
</ifModule>

原因はutf8_encodeか

原因は、/admin/kernel/db/nbxml.class.phpを見る限り、utf8_encode()で何でもかんでもISO-8859-1文字列として読み込みUTF-8へ変換してから保存し(変換する必要がないのに無理矢理変換するのでXMLファイル上で文字化けする)、デコード時にはutf8_decode()でその逆を行っている(文字化けしている状態から元に戻すので問題なく表示される)からじゃないかと睨んでいる。何だよmb_convert_encoding()だと思って.htaccessファイルで設定したのに。

試しにmb_convert_encodingへ置換

ローカル上のXAMPP環境でutf8_encode($hoge)utf8_decode($hoge)をすべてmb_convert_encoding($hoge, 'UTF-8', 'auto')に書き換えて最初からインストールしたら、XMLファイルの中身が文字化けしないのを確認できた。逆に、ローカル上のXAMPP環境でここ海外無料サーバーからフルバックアップした(コードを書き換えていないため文字化けしている)ファイル群でテストしても、問題なく表示されるのが確認できた。

したがって、実環境となるここ海外無料サーバー上では怖くてテストしていないが、おそらくローカルにダウンロードしたXMLファイルをサーバーへアップロードしてレストアしても正常に動作するんじゃないかと。