hikiのutf-8化
hikiは、rubyで書かれたwikiで、DBを必要としないため簡単に利用できるのがうれしい点。
ただし、現在のバージョン(0.8.7)ではUTF-8に対応していないため、UTF-8を使用すると自分で何とかする必要がある。
以下は、何とかしたときの作業ログです。
あまり推奨できるやり方では無いと思いますが、メモとして残しておきます。
前提
まっさらなところに新たにhikiをインストールするものとします。
すでにhikiを運用している場合にそのデータをUTF-8に対応させるのは本稿の対象外とします。
まずはダウンロード。
wget http://globalbase.dl.sourceforge.jp/hiki/25954/hiki-0.8.7.tar.gz
tar xvzf hiki-0.8.7.tar.gz
できたフォルダで、以下を実行して強制的にUTF-8に変換を実施
find . -name '*.rb' | xargs nkf --overwrite -w;
find . -name '*.css' | xargs nkf --overwrite -w;
find . -name '*.conf' | xargs nkf --overwrite -w;
find . -name '*.cgi' | xargs nkf --overwrite -w;
find . -name '*.html' | xargs nkf --overwrite -w;
find . -name '*.rhtml' | xargs nkf --overwrite -w;
つぎに、ダウンロードしたものにたいしgrepでEUC-JPと表示されている部分を
片っ端からUTF-8に置き換える。
ページタイトルをEUCで保存している処理が/hiki/command.rbにあるので、そこを修正
(おそらくこれでUTF8以外で利用できなくなっちゃってる?)
diff -r 207a0be18731 hiki-0.8.7/hiki/command.rb
--- a/hiki-0.8.7/hiki/command.rb Sun Nov 16 21:09:41 2008 +0900
+++ b/hiki-0.8.7/hiki/command.rb Sun Nov 16 23:12:09 2008 +0900
@@ -48,7 +48,8 @@
end
@aliaswiki = AliasWiki::new( @db.load( @conf.aliaswiki_name ) )
- @p = @aliaswiki.original_name(@p).to_euc if @p
+ # @p = @aliaswiki.original_name(@p).to_euc if @p
+ @p = @aliaswiki.original_name(@p) if @p
options = @conf.options || Hash::new( '' )
options['page'] = @p
@@ -431,7 +432,8 @@
def cmd_create( msg = nil )
p = @params['key'][0]
if p
- @p = @aliaswiki.original_name(p).to_euc
+# @p = @aliaswiki.original_name(p).to_euc
+ @p = @aliaswiki.original_name(p)
if /^\./ =~ @p || @p.size > @conf.max_name_size || @p.size == 0
@params['key'][0] = nil
cmd_create( @conf.msg_invalid_filename( @conf.max_name_size) )
そして、hiki.cgiの$KCODEの書き換え
-$KCODE = 'e'
+$KCODE = 'u'
hikiconf.rbのキャラクタセット
+# ページのキャラクタセット【オプション】
@charset = 'UTF-8'