るびま0009号のNvu と CGIKit2 による Web アプリケーション開発の記事を試しました。
Registration.rbに、
module Registration
module UserInfo
def to_utf8
@name = Kconv.toutf8(@name)
@age = Kconv.toutf8(@age)
というコード変換の処理を追加していますが、これは必要なんでしょうか。
CGIKit - 日本語処理 によると
CGIKit::Application#encoding
に文字コードを設定すればいいように思えます。
また、cgikitconf.rb の
def configure_localization
# @encoding = nil
を設定してもいいように思えます。
試しに Kconv::UTF8 を指定してみたら、文字化けしました。あれ?
もうちょっと調べてみます。
追記
ちょうど同じ号にある標準添付ライブラリ紹介【第 3 回】Kconv/NKF/Iconv の記事を読むと、KconvのBUG に気になる記述が…。
試しに、cgikit/lang/ja.rb のKconvの処理をNKFに置き換えてみると、
class DynamicElement
def encode_string( string, encoding )
#Kconv.kconv(string, encoding)
case encoding
when Kconv::EUC
return NKF.nkf('-e', string)
when Kconv::SJIS
return NKF.nkf('-s', string)
when Kconv::JIS
return NKF.nkf('-j', string)
when Kconv::UTF8
return NKF.nkf('-w', string)
end
end
end
文字化けの問題が解消しました。どうやら既知のバグだったようです。
でも、どうして Registration::UserInfo::to_utf8() はうまくいっているのだろう。
もうちょっと調べてみます。