Описание проблемы:
Беру к примеру 2 линка
1. xttp://www.ariatender.com/beta/
2. xttp://www.ariatender.com/beta/tender-by-category.php
По средством джема Mechanize дергаю каждый из них в порядке очереди. Контент каждой из полученных страниц я обрабатываю регулярками, отсекаю хтмл тэги, весь мусор, и оставляю чистый текст.
Проблема состоит в том, что по линку №1 всё ок. А на линке №2 у меня вылазит ошибка Invalid byte sequence in utf-8 как только я пытаюсь прикоснутся к контенту страницы gub'ом или split'ом
Меры которые я предпринимал и что из этого получилось:
force_encoding('utf-8') # ошибка остается
encode('UTF-8', 'UTF-8', invalid: :replace, undef: :replace, replace: '') # ошибка остается
encode('UTF-8', invalid: :replace, undef: :replace, replace: '') # творится что-то мне непонятное. Почему-то вся арабская абракадабра чудесным образом исчезает, хотя я ожидал что исчезнут только проблемные байты и дадут мне спокойно работать.
Если ты не против помочь разобраться в вопросе, писанина снизу для тебя.
require 'mechanize'
require 'logger'
pages = ['http://www.ariatender.com/beta/', 'http://www.ariatender.com/beta/tender-by-category.php']
agent = Mechanize.new
agent.user_agent_alias ='Mac Safari'
agent.log = Logger.new(File.join(File.dirname(__FILE__), 'log.txt'))
pages.each do |page|
begin
agent.log.debug("Page: #{page}")
content = agent.get(page)
enc = content.body.force_encoding('utf-8')
agent.log.debug("Content: #{enc}")
striped_tags = enc.gsub(/<[^>]+?>/m, ' ')
agent.log.debug("Modify content: #{striped_tags}")
rescue
agent.log.error($!.message)
agent.log.error($!.backtrace.join("\n"))
end
end