2

我正在使用 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

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

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

塞巴斯蒂安

4

1 回答 1

3

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

browser.test_field(:id => "text").value=(Iconv.conv(‘utf-8’, 'CP850', open('my-site.html') {|f| f.read})
于 2011-05-13T05:23:53.847 回答