2

Watir を使用して、以前に別のプログラムでスクレイピングした html コードを text_field に入力しています。

私が転送しているウェブサイトのコンテンツの言語はドイツ語であるため、英語のアルファベットには存在しない特殊文字が含まれています。

これらの文字は html ファイルでは正しく表示されますが、Joomla インストールの text_field に転送すると (このプログラムで Web サイトを 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

私はここでプログラミングの経験が少しあるボランティアです。来週までにこのプログラムを実行できない場合 (このエンコードの問題だけが本当に私を止めているのです)、コピーと貼り付けを使用して 100 ページを手動で転送する必要があります :/

時間と労力を割いていただき、ありがとうございます。:-)

セバスチャン

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 に答える