はてダとRuby1.9とMechanizeと
編集画面(http://d.hatena.ne.jp/はてなID/edit)で失敗する。
MechanizeのHTMLの実体参照を戻す関数でエンコーディング回りの例外が起きるからだ。
結論から言うと、これで回避できた。
require 'www/mechanize/util' class << WWW::Mechanize::Util org = instance_method(:html_unescape) define_method :html_unescape do |s| m = org.bind(self) begin m.call s rescue ArgumentError m.call s.force_encoding(NKF.guess(s)) end end end
どうも編集画面の「保存する」ボタンの「保存する」が UTF-8 なのに US-ASCII で寄越されてたので invalid byte sequence と。