UTF-8中的hpricot-invalid字节序列

时间:2011-08-01 13:39:48

标签: ruby encoding hpricot

我已经完成了一些搜索,但没有一个可以解决这个特殊的,意想不到的问题。 看看代码打击:

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

我不知道这里发生了什么,你可以在你的问题上看看你是否能解决问题

它只会弹出“ArgumentError:UTF-8中的无效字节序列”

我试图通过Iconv将原始HTML转换为utf-8,但它仍无法正常工作

伙计们,我现在真的不知道该怎么办,请帮帮我

2 个答案:

答案 0 :(得分:3)

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")) }

答案 1 :(得分:0)

我知道如何使用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

这有帮助吗?