2016-10-15 5 views
1

私はOgaというXML/HTMLパーサーを使用しています。互換性のない文字エンコーディング:Oga gemのASCII-8BITとUTF-8

私はこのURLをクロールしようとしています:私はこのエラーを取得すると

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

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

http://www.johnvanderlyn.comをし、テキストの本文を解析し、そのようにこれに関連している

/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 
関連する問題