hpricot-недопустимая байтовая последовательность в UTF-8 - PullRequest
1 голос
/ 01 августа 2011

Я уже провел несколько поисков, но ничего из этого не может решить эту странную, неожиданную проблему.Просто посмотрите на кодовый удар:

require 'open-uri'
require 'hpricot'
doc = Hpricot(open("http://www.baidu.com/")) #this web page's encoding is GB2312

Я не знаю, что здесь происходит, вы можете сделать это в своем irb, чтобы увидеть, можете ли вы решить проблему

Это просто всплывает«ArgumentError: неверная последовательность байтов в UTF-8»

Я пытаюсь преобразовать оригинальный HTML в utf-8 с помощью Iconv, но он все равно не будет работать

Ребята, я действительно неt, что делать сейчас, пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 16 августа 2012

Hpricot - UTF-8 выпуски неверная последовательность байтов в UTF-8 (ArgumentError)

require 'hpricot'
require 'open-uri'

doc = open('http://www.amazon.co.jp/') {|f| Hpricot(f.read) }
puts doc.to_html

open('http://www.amazon.co.jp/') {|f| Hpricot(f.read.encode("UTF-8")) }
0 голосов
/ 01 августа 2011

Я знаю, как это может работать с Net :: HTTP (Ruby 1.9.2):

require 'net/http'
require 'uri'

url = URI.parse('http://www.baidu.com')
res = Net::HTTP.start(url.host, url.port) {|http|
  http.get('/')
}
str = res.body.force_encoding('GB2312')
puts str
puts str.encoding.name # => GB2312

Это помогает?

...