Рубиновая недопустимая байтовая последовательность в UTF-8 - PullRequest
21 голосов
/ 07 марта 2012

У меня есть следующий код, который дает мне неверную ошибку последовательности байтов, указывающую на метод сканирования в initialize.Любые идеи о том, как это исправить?Как бы то ни было, ошибка не возникает, когда (.*) между тегом h1 и закрывающим > отсутствует.

#!/usr/bin/env ruby

class NewsParser

  def initialize
      Dir.glob("./**/index.htm") do |file|
        @file = IO.read file 
        parsed = @file.scan(/<h1(.*)>(.*?)<\/h1>(.*)<!-- InstanceEndEditable -->/im)
        self.write(parsed)
      end
  end

  def write output
    @contents = output
    open('output.txt', 'a') do |f| 
      f << @contents[0][0]+"\n\n"+@contents[0][1]+"\n\n\n\n" 
    end
  end

end

p = NewsParser.new

Редактировать: Вот сообщение об ошибке:

news_parser.rb:10:in 'scan': invalid byte sequence in UTF-8 (ArgumentError)

решено: комбинация использования: @file = IO.read(file).force_encoding("ISO-8859-1").encode("utf-8", replace: nil) и encoding: UTF-8 решает проблему.

Спасибо!

1 Ответ

36 голосов
/ 08 марта 2012

Сочетание использования: @file = IO.read(file).force_encoding("ISO-8859-1").encode("utf-8", replace: nil) и #encoding: UTF-8 решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...