【问题标题】:incompatible character encodings: ASCII-8BIT and UTF-8 in Oga gem不兼容的字符编码:Oga gem 中的 ASCII-8BIT 和 UTF-8
【发布时间】:2017-02-24 12:58:39
【问题描述】:

我正在使用一个名为 Oga 的 XML/HTML 解析器。

我正在尝试抓取此 URL:http://www.johnvanderlyn.com 并解析正文以获取文本,如下所示:

 def get_page
    body = Net::HTTP.get(URI.parse(@url))
    document = Oga.parse_html(body)
  end

document = get_page    
words = document.css('body').text

当我收到此错误时:

/gems/oga-2.7/lib/oga/xml/node_set.rb:276:in block in text': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)

这和这个bit of code here有关。

这可能是什么原因造成的,我该如何解决?有没有办法让我在本地修复它,或者我必须分叉 gem,修复该方法然后使用我的分叉?

想法?

【问题讨论】:

  • 我刚刚执行了上面的代码,没有任何问题。您链接的那段代码与故障无关,即body 的问题被解释为错误的编码。在解析文档之前尝试body = body.force_encoding 'UTF-8'
  • @mudasobwa 完美。这非常有效。如果您将其添加为答案,我会接受!

标签: ruby encoding utf-8 html-parsing


【解决方案1】:

您链接的那段代码与故障无关,即正文的问题被解释为错误的编码。在解析文档之前尝试添加body = body.force_encoding 'UTF-8'

def get_page
  body = Net::HTTP.get(URI.parse(@url)).force_encoding 'UTF-8'
  document = Oga.parse_html(body)
end

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2011-05-26
    • 2011-12-14
    • 2016-04-27
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多