【问题标题】:Encoding Problem when filling out a text_field with Watir in Ruby在 Ruby 中使用 Watir 填写 text_field 时出现编码问题
【发布时间】:2011-05-12 07:27:04
【问题描述】:

我正在使用 Watir 用我之前用另一个程序抓取的 html 代码填写一个 text_field。

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

这些字符在 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

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

感谢您抽出时间和您为此付出的所有努力! :-)

塞巴斯蒂安

【问题讨论】:

标签: ruby unicode encoding watir iconv


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,这并没有给我任何输出:/
  • 戴夫回答中的参数顺序是错误的。应该是 Iconv.conv('utf-8', encoding_of_file, ...)。
  • 感谢 jarib,我盲目地复制了一个从 utf-8 编码的示例。我修好了。
猜你喜欢
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多