Hiki の UTF-8化
ローカルに Wiki があるとメモに便利だと思ってインストールした。
いろんな種類がある Wiki だけど
ということで Hiki を選んだ。
しかしこれは EUC-JP で出力され、まぁ特に不自由はしないんだけど、UTF-8 が好きなので UTF-8 でやりとりするように改造してみた。
とりあえず nkf で各テキストファイルを UTF-8 にする
% find . -type f -exec nkf --in-place -w {} \; % find ~/hiki/data -type f -exec nkf --in-place -w {} \;
ここで、~/hiki/data は hikiconf.rb の @data_path とする。
hiki.cgi の $KCODE を u(UTF-8) にする
--- hiki.cgi.bak 2009-03-28 21:55:51.000000000 +0900 +++ hiki.cgi 2009-03-28 21:55:51.000000000 +0900 @@ -4,7 +4,7 @@ BEGIN { $stdout.binmode } -$KCODE = 'e' +$KCODE = 'u' begin if FileTest::symlink?( __FILE__ )
hikiconf.rb の charset を UTF-8 にする
--- hikiconf.rb.bak 2009-03-28 21:55:51.000000000 +0900 +++ hikiconf.rb 2009-03-28 21:55:51.000000000 +0900 @@ -122,7 +122,7 @@ #@hilight_keys = true # ページのキャラクタセット【オプション】 -#@charset = 'EUC-JP' +@charset = 'UTF-8' # タイムアウトの秒数【オプション】 #@timeout = 30
ここまではわりと王道な変更。
次に hiki/util.rb で String#to_euc を UTF-8 に変換するメソッドに変えるという暴挙にでる
--- hiki/util.rb.bak 2009-03-28 21:57:06.000000000 +0900 +++ hiki/util.rb 2009-03-28 22:02:13.000000000 +0900 @@ -9,7 +9,7 @@ class String def to_euc - NKF::nkf('-m0 -e', self) + NKF::nkf('-m0 -w', self) end def to_sjis
だいたいこれでうまくいくが、文字単位の差分表示がぶっ壊れる。
hiki/docdiff/charstring.rb が怪しいが、今日はもう疲れた。