我使用Nokogiri解析html。我需要頁面中的內容和圖片標籤,因此我使用inner_html
而不是content
方法。但由content
返回的值編碼正確,而由inner_html
錯誤編碼。有一點需要注意,該頁面是中文的,不使用UTF-8編碼。由Nokogiri提取的Html錯誤編碼
這裏是我的代碼:
# encoding: utf-8
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'iconv'
doc = Nokogiri::HTML.parse(open("http://www.sfzt.org/advise/view.asp?id=536"), nil, 'gb18030')
doc.css('td.font_info').each do |link|
# output, correct but not i expect: 目前市面上影響比
puts link.content
# output, wrong and not i expect: <img ....></img>Ŀǰ??????Ӱ??Ƚϴ?Ľ????
# I expect: <img ....></img>目前市面上影響比
puts link.inner_html
end
您正在使用什麼版本的Ruby的?什麼版本的Nokogiri?你的期望是什麼?當我在Ruby 1.9下運行上面的代碼時,我得到一個以「目前市面上影響比較大的講述」論文開頭的UTF-8編碼字符串。 – Phrogz 2012-01-06 18:13:52
@Phrogz我使用Ruby 1.9.2;如果我使用'link.content',那是正確的(如上所述)。但除了純文本外,我還希望從頁面獲取html標籤,如img。但是這一次,它不是UTF-8編碼。它輸出類似於'Ŀǰ????????????' – Frankel 2012-01-07 01:03:05
請更新您的問題,顯示如何重現和驗證問題,以及您的期望或願望代替。 – Phrogz 2012-01-08 17:33:18