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

标签 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

它总是相同的字节序列。我应该如何删除这些有什么想法吗?

最佳答案

我找到了解决问题的方法。结果是我抓取的 XML 文档的编码出了问题。为了解决这个问题,我现在将编码选项设为显式:

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

在我刚刚拥有之前:

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

希望这对某人有帮助。

关于ruby - 如何删除无效的字节序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980843/

相关文章:

ruby-on-rails - 如何在 Ruby 中遍历给定一周的每一天?

java - 源代码中的字符串和从文件中读取的字符串有什么区别?

javascript - 如何替换不在 JavaScript 中特定标签内的文本

perl - 需要 html::tagFilter 的帮助

javascript - 带有选择器的 Node.js 和 Cheerio 解析表

ruby gem 安装问题 - 错误 : Could not find a valid gem 'vim-ruby' (>= 0) in any repository

ruby 遍历数组并提取元素

ruby-on-rails - rake 数据库 :schema:dump show no fields with rails 3. 2.3 和 SQL Server 2008

swift -\u{...} 转义序列中的预期 '}'

python - Python 改为 UTF-8 后出现奇怪的字符