Как обойти неверную последовательность байтов в UTF-8 ArgumentError? - PullRequest
0 голосов
/ 31 мая 2011

Я пытаюсь запустить следующий код, где я использую nokogiri для анализа xml-файла.Я хочу исключить символы новой строки из текста, содержащегося между тегами.Код, который я здесь использовал, раньше работал, но по какой-то причине сейчас не работает.Возможно, потому что я обновился до ruby-1.9.1.

titles = node.search('b')
titles.each do |e|
  unless e.parent.name == "h4"
    if e.children.children.first.nil? == false
      puts e.children.children.first.text.gsub("\n","")
    end
  end
end

Когда я запускаю код, я получаю эту ошибку:

HI.  You're using libxml2 version 2.6.16 which is over 4 years old and has
plenty of bugs.  We suggest that for maximum HTML/XML parsing pleasure, you
upgrade your version of libxml2 and re-install nokogiri.  If you like using
libxml2 version 2.6.16, but don't like this warning, please define the constant
I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 before requring nokogiri.

test.rb:35:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)

1 Ответ

1 голос
/ 13 сентября 2011

Вы можете попробовать установить 1.9.2 через RVM.

curl -L https://get.rvm.io | bash
rvm install 1.9.2

Если вы хотите использовать ruby ​​по умолчанию для вашей установки rvm 1.9.2, тогда

rvm use 1.9.2 --default

ПРИМЕЧАНИЕ. Вышеуказанное соответствует:

curl -L https://get.rvm.io | bash -s -- --ruby=1.9.2
...