CGIKit 2.xでは、文字コードにUTF-8を推奨している。(CGIKit - 日本語処理)
しかし、ruby 1.8.2のKconvでは UTF-8 に変換できない。(るびま)
変換できないことを確認してみる。
require 'kconv'
# UTF-8 で表された 'Hello, るびま!'
str = "\x48\x65\x6c\x6c\x6f\x2c\x20\xe3\x82\x8b\xe3\x81\xb3\xe3\x81\xbe\xef\xbc\x81"
puts Kconv.guess(str) # => 6 == Kconv::UTF8 正しい
str = Kconv.kconv(str, Kconv::UTF8) # UTF-8をUTF-8に変換する
puts Kconv.guess(str) # => 1 == Kconv::JIS
# Shift_JIS で表された 'Hello, るびま!
str = "\x48\x65\x6c\x6c\x6f\x2c\x20\x82\xe9\x82\xd1\x82\xdc\x81\x49"
puts Kconv.guess(str) # => 6 == Kconv::UTF8 正しい
str = Kconv.kconv(str, Kconv::UTF8) # Shift_JISをUTF-8に変換する
puts Kconv.guess(str) # => 1 == Kconv::JIS
対策としては、るびまにもあるように 修正されたkconv.rb を使用するのがよさそう。
修正されたkconv.rb をlibディレクトリにコピーすれば、使えるようになる(はず)。