マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

WWW::Mechanizeでエラーが出る

mixiにログインして書き込み確認画面まで行くプログラムを作ったが問題が発生した。以下のスクリプトを実行するとエラーがでる。エラーメッセージは`iconv': "\245\306\245\271\245\310" (Iconv::IllegalSequence)で@agent.submit(diary_form)のところで発生しているようだ。eucで文字列を送ろうとするとエラーが発生してUTF-8だとエラーは発生しないもよう。どうすればいいのだろうか?

require 'rubygems'
require 'mechanize'
require 'kconv'

email = 'hogehoge@hogehoge.com'
password = 'hoge'

class Mixi
    def login(email, password)
       @agent = WWW::Mechanize.new
       @agent.set_hook
       page = @agent.get("http://mixi.jp/home.pl")

        form = page.forms[0]
        form['email'] = email
        form['password'] = password
        form['next_url'] = '/home.pl'

        @agent.submit(form)
    end

    def writeDiary(title, text)
        page = @agent.get('home.pl')

        diary_link = ''
        page.links.each{|link|
            if link.href.include?('add_diary.pl')
                diary_link = link.href
                break
            end
        }

        diary_page = @agent.get(diary_link)
        diary_form = diary_page.form('diary')
        diary_form['diary_title'] = title.toeuc
        diary_form['diary_body'] = text.toeuc

       confirm_page = @agent.submit(diary_form)
    end
end

mixi = Mixi.new
mixi.login(email, password)
mixi.writeDiary('テスト', 'テスト')