windows平台ruby1.8.6p287的iconv有bug??

这两天在写爬虫,需要iconv来转换字符编码,昨天在解决一个不存在的问题。。
嗯,我的意思是这个问题是别人的问题,不是我的问题。
Iconv.iconv("UTF-8//IGNORE","GB18030//IGNORE",str)居然还会出错导致程序中断。但是我一直没有注意到出错的时候没有输出任何ruby异常,而是只显示一个类似这样的字符串"\277"。搜索了一整天没有结果,后来仔细一想,感觉输出不太对劲,会不会是iconv底层c那部分的问题?于是换到ubuntu下用ree1.8.7来试,结果就没问题了……
========================================================

另外还有一个奇怪的问题……
begin
@topic_page = @topic_page.link_with(:text => "#{@page}").click
rescue Net::HTTPInternalServerError
retry
end

这里居然还会抛Net::HTTPInternalServerError,真是不合逻辑啊不合逻辑……
=======================================================
郁闷了,搞了半天,Net::HTTPInternalServerError居然不是一个Error,不是StandardError的子类。

自己启动了个服务器,在articles controller的index方法里写个raise '',再用以下代码访问:
require 'mechanize'

agent=WWW::Mechanize.new
begin
page = agent.get 'http://localhost:3000/admin/articles'
rescue =>err
puts "#{err.class}##{err}"
end


输出:WWW::Mechanize::ResponseCodeError#500 => Net::HTTPInternalServerError
原来如此啊....rake任务打印出的异常信息全都不带类名么?这样前面第1个错误的解决也是歪打正着了……

改个加强型的,哇哈哈哈哈:
def self.access(target)
begin
if target.respond_to? 'click'
url = target.href
target.click
else
url = target
@@agent.get(target)
end
rescue WWW::Mechanize::ResponseCodeError => err
#FIXME: puts到时候改为log
puts "#{err}, caused by accessing: #{url}"
sleep 10
retry
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值