суббота, 22 августа 2009 г.

Ruby encoding

Продолжая писать бота для травиана, решил заточить под руби 1.9. Думал просто запустится... Черта-с два. Не совместим руби 1.9 с 1.8 :( Первое, что пришлось сделать, это добавить
# coding: utf-8
первой строчкой в каждый файло. Следующее, что меня убило, была ругань :
in `scan': incompatible encoding regexp match (UTF-8 regexp with
ASCII-8BIT string) (Encoding::CompatibilityError)

на строчку :
res = main_page.scan(/#{pr}:(.*?)<\/table>/m).to_s

Задолбал всех вопросами, однако ответа так и не получил. А решалось всё довольно просто
main_page.force_encoding "UTF-8"

Дальше выяснилось что [].to_s работает не так как в руби 1.8 Пришлось переписывать некоторое
количество строк.

Пытался собрать документашку из сырцов руби, ибо на оф. сайте. документашка почему-то для 1.8 :(,
однако ничего не получилось. rdoc сначала скушал всю память, затем убил все проги, а потом и сам
"Убито". Ладно, ничего, буду юзать ri...

2 комментария:

  1. Здравствуйте. А я не могу побороть проблему с кодировкой. Может Вы мне подскажете?
    Простой пример. Сайт на windows-1251.

    # coding: utf-8
    #/usr/bin/env ruby
    require "watir"
    require "firewatir"
    @my_rowser = 'firefox'

    Watir::Browser.default = @my_rowser
    browser = Watir::Browser.new
    browser.goto('http://my.test/iz.htm')
    if browser.text.include? "Торговля".force_encoding("UTF-8")
    puts ' ok.'
    else
    puts ' Ссылка Торговля не найдена.'
    end
    if browser.text.include? "Торговля"
    puts ' ok2.'
    else
    puts ' Ссылка Торговля не найдена2.'
    end

    В результате:
    in `include?': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)

    ОтветитьУдалить
  2. Как можно получить вашего бота? mrlewap@gmail.com

    ОтветитьУдалить