ruby中的编码问题
-
需求
从网站中抓取网页保存的本地,再解析数据,解析数据时需要频繁调试,每次都要访问网络,速度比较慢,就想到先把网页保存的本地。然后从本地读取。
-
问题
保存到本地时总是或出现编码问题,我用的是sublime,无法将网页内容输出到控制台,各种折腾编码之后,发现是sublime的问题,sublime只能输出utf-8 的编码方式。其他的格式要么是输出乱码,要么是不输出,要么是只输出部分内容。
-
解决办法
既然知道了是sublime 的问题那么直接按照原来网页的编码格式写进文件就行了,不用管sublime控制台输出的内容是否正常,只要写到文件的内容是正常的就行了。
下面是下载html网页的源码,可以当做包来调用
def Page.down_html(page_url,file_name,ec='gb2312')
if page_url.class.to_s == "String"
begin
page=Mechanize.new.get(page_url)
rescue Exception => e
puts "#{page_url}不能访问"
return
end
elsif page.class.to_s != "Mechanize::Page"
puts "不可解析的类型"
return
end
page.encoding=ec
File.open(file_name,"w+") do |io|
io.puts page.body
puts "down succcess!"
end
end