2012-08-09 69 views
0

有人可以看看这个。我认为在进行此调用时有无效的UTF-8字符。Nokogiri - 编码问题 - 无效的UTF8字符

Nokogiri::HTML(open("http://www.next.co.uk/x502062s2"))

如果有办法解决?这是问题吗?我写了一个新的开源屏幕刮板设计用于产品信息捕获(当一个网站不提供饲料时)之前有人说我正在做一些有些时髦:-)

+0

好的事情很奇怪......如果这个更改为Nokogiri.parse(open(uri.to_s).read)一切正常。我需要找出原因。 – 2012-08-09 19:30:08

+1

您使用的是Ruby,Nokogiri和Open-URI的哪个版本?我似乎没有得到任何错误。 – 2012-08-09 20:43:54

回答

2

在传递任何东西给Nokogiri之前,你可以编码页面的内容,并使用Iconv忽略所有无效的UTF字符。

我用的是这样的:

ic = Iconv.new('UTF-8//IGNORE', 'UTF-8') 
valid_string = ic.iconv(open('http://example.com').read) 

您也可以勾选 “Fixing invalid UTF-8 in Ruby, revisited”。