如何避免使用ruby 1.9和机械化表单提交Encoding :: CompatibilityError?

时间:2010-11-01 15:24:32

标签: ruby character-encoding mechanize ruby-1.9

目前,我正在测试一个使用ruby 1.9.2(Ubuntu Lucid包)的机械化的ruby脚本。

第一行设置以下选项:

#!/usr/bin/env ruby -KU

一些机械化后置代码触发异常:

/usr/lib/ruby/1.9.1/www/mechanize/form.rb:222:in `join': incompatible character encodings: ISO-8859-1 and ASCII-8BIT (Encoding::CompatibilityError)
    from /usr/lib/ruby/1.9.1/www/mechanize/form.rb:222:in `request_data'
    from /usr/lib/ruby/1.9.1/www/mechanize.rb:401:in `post_form'
    from /usr/lib/ruby/1.9.1/www/mechanize.rb:344:in `submit'
    from /usr/lib/ruby/1.9.1/www/mechanize/form.rb:130:in `submit'

在源程序中使用Mechanize:

# f is a Mechanize::Page object
final = f.form('final')
  f.form('final') { |x|
f.form('final') { |x|
  x.user == user
  # ... 
}
a = final.submit

通过File.new()对象和解析File对象的Nokogiri对象从磁盘读取填充的数据(例如用户)。

将数据打印到控制台并不会显示明显的问题。

因此我的问题:如何在使用mechanize发布表单数据时修复此编码问题?

我是否必须告诉机械化用于http POST的字符编码是什么?

1 个答案:

答案 0 :(得分:1)

好吧,看起来像机械化的0.9.3版本中的一个错误(可能是issue 25)。使用the current git version of mechanize修复了发布问题。

但是机械化1.0版本也应该包含修复程序。