我使用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