PukiWiki/UTF8化

PukiWiki/UTF8化

1.4系で EUCJP 運用していたデータが大量にあって、それを PHPの実行環境の問題で 1.5 UTF8系で動かさないといけないとなった場合の対処

データファイルを抽出する

PukiWiki はすべてのページのデータは wiki ディレクトリ以下に全部保存されているのでそこから取り出せばよい

ファイルの中身のUTF8化

Linux/コマンド/iconv コマンドで一発で行う

$ ls hoge|xargs -I{} sh -c 'iconv -f EUCJP -t UTF8 hoge/"{}" > piyo/"{}"'

ファイル名をUTF8対応にする

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
wiki/pukiwiki/utf8ize.txt · 最終更新: 2021-06-25 12:39 by ore