hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Nokogiriが文字化けして困ってる

Hpricotなら文字化けしないのが,Nokogiriだと文字化けすることがあって,よくわからない.

irb(main):029:0> NKF.nkf('--utf8', Hpricot(open('http://tokuna.blog40.fc2.com/blog-entry-2076.html').read).at('title').inner_text)
=> " Amazonで安く売られている商品だけを探せるサイト「Amazon-Sale」*二十歳街道まっしぐら"
irb(main):030:0> NKF.nkf('--utf8', Nokogiri(open('http://tokuna.blog40.fc2.com/blog-entry-2076.html').read).at('title').text)
=> " Amazon、テーテつ、ツッテ、ツ、テゥツ、テャツ、テ、ツ、ツ、テォツセツヲテ嘉環、テmazon-Sale〓×*〓〓½½〓г¹〓»〓〓〓〓〓·〓°〓〓"


encodingを指定すると正しく扱えるけど,パースする前にmetaタグのcharsetを見ないといけないのはやばい気がする.

irb(main):031:0> Nokogiri(open('http://tokuna.blog40.fc2.com/blog-entry-2076.html').read, nil, 'EUC-JP').at('title').text
=> " Amazonで安く売られている商品だけを探せるサイト「Amazon-Sale」*二十歳街道まっしぐら"


Nokogiriに渡す前にNKFでUTF-8にすると,さっきのページはうまくいけど,他のページがおかしくなったりする.

irb(main):032:0> Nokogiri(NKF.nkf('--utf8', open('http://tokuna.blog40.fc2.com/blog-entry-2076.html').read)).at('title').text
=> " Amazonで安く売られている商品だけを探せるサイト「Amazon-Sale」*二十歳街道まっしぐら"
irb(main):033:0> Nokogiri(NKF.nkf('--utf8', open('http://d.hatena.ne.jp/hitode909').read)).at('title').text
=> "hitode909"