« Vine Linux3.1ネットワークインストール覚書 | メイン | Movable Type3.17でHTMLAreaを使う(5) »

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

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

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

続く

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/40

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2005年09月08日 19:02に投稿されたエントリーのページです。

ひとつ前の投稿は「Vine Linux3.1ネットワークインストール覚書」です。

次の投稿は「Movable Type3.17でHTMLAreaを使う(5)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35