[tool] コンテンツUTF8変換スクリプト
1.4 までの EUC-JP で作成されたコンテンツを、 1.5 向けの UTF-8 データヘコンバートする Perl スクリプトです。
- wifky のプラグインではなく、シェル上で利用するスクリプトです。
- 利用する際は、
元コンテンツは全て間違いなく、全てバックアップしてください。
- 涙目の実話ですが、 開発者は利用中、ミスって過去1年分の「にっき」を失なってしまいました。
- 当然ながら、再発防止のための安全処置は打ってありますが、 何事も絶対ということはありません。
- コンテンツを失なっても、開発者は責任を負いかねますので、 _基本は自己責任でお願い致します。
制限・注意
以下に書いてある内容が分からない場合、本スクリプトは利用すべきではありません。
- 利用には Encode モジュールを持つ Perl 5.8 以降が必要です。
- 日本語が含まれていたページは URL が変わってしまうので、
外部からのリンクが切れてしまいます。
- [plugin] リクエストURL:EUC-JP→UTF8変換というプラグインで、 リクエストされたページ名の EUC-JP → UTF-8 変換して、 リンク切れを解消できます。
- 添付ファイルについては、日本語コードを変換すべきか、そうでないか、
ファイル名のパターンで見ています。
-
comment で始まるファイル名、拡張子 .txt のもの
→ 変換する - book で始まるファイル名、拡張子 .nst のもの
→ キャッシュファイルなので、コピーをしない(wifky自体に再生成させる) - その他
→ 変換せず、バイナリコピーする
-
comment で始まるファイル名、拡張子 .txt のもの
- このスクリプトは、パーミッションの調整は自動で行いますが、
ファイル所有者の変更まで出来ません。
- そのため、suexec 環境でない場合は、自分で前後に chown -R する必要があります。
- chown できるのは root だけですので、root権限のない ホスティングサービスで、suexec 環境でない場合(=sourceforge.jpなど)は、 利用すべきではありません。
- 削除・復元プラグインで削除したコンテンツは変換対象外です。
- 長い名前のページ名・添付ファイル名のコンテンツは
コンバートできない場合があります。
- 日本語一字を表現するのに EUC-JP では 2bytes だったのが、 UTF-8 では 3bytes 必要になるためです。 内部で利用しているファイル名ではそれが更に倍になるので、 255bytes以内というファイル名制限を持つ Windows では 「ファイル名の長さ+添付ファイル名の長さ ≦ 42文字(日本語)」 となってしまいます。 (実際は、さらにディレクトリ名なども差し引かれますので、 もっと少ないはず)
- Windows で、長い名前のページを使っている場合は、 そのまま EUC-JP で運用した方が無難です。
一番、最後が結構深刻で「サーバ上で直接実施するのは危険だから、 まずはローカルの Windows へ rsync してテストする」といったことが 難しくなっています。
利用方法
$ perl 14to15.pl EUC-JPのワークディレクトリ名
を実行すると、UTF-8のワークディレトリが作成され、 そこへコンテンツがコンバートされます。 (「14to15.pl index.dat」の場合、 「index.d」という新ワークディレクトリに格納される)
以下は、実行イメージです。 メッセージは ShiftJIS(正確には cp932) ですので、ご注意ください。
$ perl ./14to15.pl index.dat [A] 2005.12.17 [A] 2006.07.28 [A] □ NYAOSで澤という漢字が入力できない [A] □ coLinux を入れる [B] CSS_black - sunset.jpg [A] □ NYAOSで%BEGINLIBPATH%をSETで設定できない [A] CSS quiet black [A] CSS quiet black - referer.txt [-] 積読リスト - bookinfo.4150116660 [A] CSS_char [A] CSS_test [A] CSS_char - referer.txt [Plugin] ruby.pl [A] test [A] trackbacktest [A] trackbacktest - trackback.txt [A] (2004.01.02) [B] test - 05-02-12_14-47夫婦杉.jpg [A] スクリプト勉強会 [A] Footer [A] (2004.01.11) テスト [A] (2004.01.18) 携帯より更新してみる [A] gawk で Wiki-Engine を書いてみた! [B] gawk で Wiki-Engine を書いてみた! - index.awk [A] (2004.01.01) ココログよりのコンバート [A] (2004.01.01) ココログよりのコンバート - comment.0 :(以下省略)
- [A] は EUC-JP → UTF-8 変換
- [B] は変換なしのバイナリコピー
- [-] はキャッシュファイルのため、コピー見送り
- [Plugin] はプラグインファイル(バイナリコピー)
- [Config] は設定ファイル(変換ありコピー)
-
あとに続くテキストは、ページ名 - 添付ファイル名
(添付ファイル名が無い時はページ本文のコンバート)
コンバートをかけた結果できるディレクトリ(wifky.d とか index.d)は、 wifky から直ちに認識されます。
もし、結果に問題があるなど、EUC-JP に戻したくなった場合、 UTF-8 版のディレクトリを別の名前にリネームすれば、 EUC-JP 版のディレクトリを再認識するようになります。
|