menu
書いてる野郎
orebike@gmail.com
1.4系で EUCJP 運用していたデータが大量にあって、それを PHPの実行環境の問題で 1.5 UTF8系で動かさないといけないとなった場合の対処
PukiWiki はすべてのページのデータは wiki ディレクトリ以下に全部保存されているのでそこから取り出せばよい
Linux/コマンド/iconv コマンドで一発で行う
$ ls hoge|xargs -I{} sh -c 'iconv -f EUCJP -t UTF8 hoge/"{}" > piyo/"{}"'
Pukiwiki のファイル名はEUCJPエンコードされたバイト列を16進表記されたモノになっているので。 こいつを元の読める形に戻して、の EUCJP を UTF8 に再エンコードして、そのバイト列を 16進 表記に戻してやると完成する。
この文字コードバイトコード操作はコマンドではやりにくいので Ruby で行った
Ruby/Pukiwiki のファイル名をUTF8に変換する
というのを統合してゴミのようなコードを書くとこうなる
require "fileutils" Dir.glob("input/*").each do |f| name = f.gsub(/input\//, ""); name = name.gsub(/\.txt/, ""); p [name].pack("H*").encode("utf-8", "euc-jp") name = [name].pack("H*").encode("utf-8", "euc-jp").unpack("H*")[0].upcase FileUtils.cp(f, "out/" + name + ".txt") end