Проблема кодирования при заполнении текстового поля с помощью Watir в Ruby - PullRequest
2 голосов
/ 12 мая 2011

Я использую Watir, чтобы заполнить текстовое поле html-кодом, который я ранее просмотрел в другой программе.

Язык содержимого сайта, который я передаю, - немецкий, поэтому в нем задействованы специальные символы, которых нет в английском алфавите.

Эти символы правильно отображаются в html-файле, но при переносе в текстовое поле установки Joomla (я перевожу веб-сайт в 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

Я очистил страницы с помощью Механизации, используя следующий код:

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

Надеюсь, вы мне чем-нибудь поможете, так как я просто волонтер, работающий здесь с небольшим опытом программирования. Если я не запустил эту программу на следующей неделе (это единственное, что действительно меня останавливает), то мне придется вручную перенести сотню страниц, используя copy + paste: /

Спасибо, что нашли время и все усилия, которые вы вкладываете в это! : -)

Себастьян

1 Ответ

3 голосов
/ 13 мая 2011

Вы пробовали конвертировать в UTF-8?

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