Hiki の UTF-8化

ローカルに Wiki があるとメモに便利だと思ってインストールした。
いろんな種類がある Wiki だけど

  • シンプルなアピアランス
  • 日本語が不自由無く使えて
  • ちゃんとした HTML を出力する
  • Ruby で実装されている

ということで 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_eucUTF-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 が怪しいが、今日はもう疲れた。