在Ruby中用Watir填充文本_字段时出现编码问题

在Ruby中用Watir填充文本_字段时出现编码问题,ruby,unicode,encoding,watir,iconv,Ruby,Unicode,Encoding,Watir,Iconv,我正在使用Watir用我以前用另一个程序刮取的html代码填充一个文本字段 我正在传输的网站内容的语言是德语,因此涉及到一些特殊字符,这些字符在英语字母表中是不存在的 这些字符在html文件中正确显示,但当传输到Joomla安装的text_字段时(我正在使用此程序将网站传输到Joomla),特殊字符不会正确显示 由于用户的大力帮助,我已经能够解决以前的一个问题,现在正在使用以下方法传输内容: browser.text_field(:id => "text").value=(open('my

我正在使用Watir用我以前用另一个程序刮取的html代码填充一个文本字段

我正在传输的网站内容的语言是德语,因此涉及到一些特殊字符,这些字符在英语字母表中是不存在的

这些字符在html文件中正确显示,但当传输到Joomla安装的text_字段时(我正在使用此程序将网站传输到Joomla),特殊字符不会正确显示

由于用户的大力帮助,我已经能够解决以前的一个问题,现在正在使用以下方法传输内容:

browser.text_field(:id => "text").value=(open('my-site.html') { |f| f.read })
结果是,特殊字符如下所示:

über => ³ber 
vergißt => vergi▀t 
wählen => wõhlen 
geförderter => gef÷rderter 
用户猜测这与我使用的代码页和编码问题有关。运行DOS:chcp导致850的输出

他试图解决这个问题的方法如下:

require 'iconv'
browser.text_field(:id => "text").value=(
  Iconv.iconv('CP850', 'ISO-8859-1', open('my-site.html') { |f| f.read })
)
不幸的是,这并没有解决问题,特殊字符现在显示为,例如: \x81ber=u ber vergi\xE1t=vergißt 和新行显示为\n

我使用以下代码使用Mechanize刮取页面:

auszug=page.search ('/html/body/table/tr/td/table/tr[2]/td/table/tr/td[4]')
outputFile<<auszug
auszug=page.search('/html/body/table/tr/td/table/tr[2]/td/table/tr/td[4]'))

outputFile是否尝试转换为UTF-8

browser.test_field(:id => "text").value=(Iconv.conv(‘utf-8’, 'CP850', open('my-site.html') {|f| f.read})

不幸的是,Dave答案中的参数顺序是错误的。它应该是Iconv.conv('utf-8',对文件进行编码,…)。感谢jarib,我盲目地复制了一个从utf-8编码的示例。我修好了,“Ruby”不应该都是大写: