2016-10-15 57 views
1

我正在使用名爲Oga的XML/HTML分析器。不兼容的字符編碼:Oga寶石中的ASCII-8BIT和UTF-8

我試圖抓取該網址: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

什麼可能導致這種情況,我該如何解決?有沒有一種方法可以讓我在本地修復它,還是我必須修補寶石,修復該方法,然後使用我的分叉?

想法?

+1

我剛纔執行上面的代碼沒有任何問題。你鏈接的代碼與毛刺毫無關係,這就是'body'的問題被解釋爲錯誤的編碼。在解析文檔之前嘗試'body = body.force_encoding'UTF-8'。 – mudasobwa

+0

@mudasobwa完美。這非常出色。如果您將其添加爲答案,我會接受它! – marcamillion

回答

2

你鏈接的代碼位與毛刺無關,那就是身體的問題正在被錯誤的編碼解釋。在解析文檔之前嘗試添加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 
相關問題