CGIKit2の文字コードの処理について

[るびま0009号][1]の[Nvu と CGIKit2 による Web アプリケーション開発][2]の記事を試しました。

Registration.rbに、

module Registration
module UserInfo
def to_utf8
@name = Kconv.toutf8(@name)
@age = Kconv.toutf8(@age)

というコード変換の処理を追加していますが、これは必要なんでしょうか。

[CGIKit – 日本語処理][3] によると

CGIKit::Application#encoding

に文字コードを設定すればいいように思えます。

また、cgikitconf.rb の

def configure_localization
# @encoding = nil

を設定してもいいように思えます。

試しに Kconv::UTF8 を指定してみたら、文字化けしました。あれ?

もうちょっと調べてみます。

追記

ちょうど同じ号にある[標準添付ライブラリ紹介【第 3 回】Kconv/NKF/Iconv][4] の記事を読むと、[KconvのBUG][5] に気になる記述が…。

試しに、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() はうまくいっているのだろう。

もうちょっと調べてみます。

[続く][7]

[1]: http://jp.rubyist.net/magazine/?0009
[2]: http://jp.rubyist.net/magazine/?0009-CGIKit-2.x
[3]: http://cgikit.sourceforge.jp/cgi-bin/ja/index.cgi?%C6%FC%CB%DC%B8%EC%BD%E8%CD%FD#l13
[4]: http://jp.rubyist.net/magazine/?0009-BundledLibraries
[5]: http://jp.rubyist.net/magazine/?0009-BundledLibraries#l11
[7]: http://www.gesource.jp/weblog/archives/2005/09/cgikit22_1.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください