如何删除无效的字节序列?

时间:2012-10-19 19:06:53

标签: ruby utf-8 html-parsing

我正在抓取html并遇到“无效的字节序列错误”。我在另一篇文章中提到了一些建议并插入了以下两行代码:

doc_scores.encode!('UTF-16', :undef => :replace, :invalid => :replace, :replace => "")
doc_scores.encode!('UTF-8')

这有助于大幅减少错误,但是,我仍然会在10-20%的时间内发现以下异常(换句话说,每5次html扫描中就有1次):

Input is not proper UTF-8, indicate encoding !
Bytes: 0xEA 0x20 0x20 0x22

它始终是相同的字节序列。有什么想法我应该去除这些吗?

1 个答案:

答案 0 :(得分:3)

我找到了解决问题的方法。事实证明,我正在抓取的XML文档的编码是一个问题。为了解决这个问题,我现在正在明确编码选项:

doc = Nokogiri::XML::Reader(open(url),nil,'ISO-8859-1')

在我刚出现之前:

doc = Nokogiri::XML::Reader(open(url))

希望这有助于某人。