使用Ruby中的Watir填充text_field时的编码问题

时间:2011-05-12 07:27:05

标签: ruby unicode encoding watir iconv

我正在使用Watir填写一个text_field,其中包含我之前用其他程序编写的html代码。

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

这些字符在html文件中正确显示,但是当转移到Joomla安装的text_field时(我使用此程序将网站转移到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 =ü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

我希望你能以某种方式帮助我,因为我只是一名志愿者,在这里有一些编程经验。如果我没有在下周运行这个程序(这个编码事情是唯一真正阻止我的东西),那么我将不得不使用copy + paste手动传输一百页:/

感谢您花时间和所有的努力! : - )

塞巴斯蒂安

1 个答案:

答案 0 :(得分:3)

您是否尝试过转换为UTF-8?

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