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'
Pocket

Leave a reply

required

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>