【发布时间】:2012-01-12 05:17:46
【问题描述】:
我正在抓取一些网站,最终遇到如下所示的 UTF-8 错误:
/usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/support/ext/blank.rb:19:in
`=~': invalid byte sequence in UTF-8 (ArgumentError)
现在,我不在乎网站是否 100% 准确。有没有一种方法可以获取我获得的页面并去除任何有问题的编码,然后在我的程序中传递它?
如果这很重要,我正在使用ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]。
更新:
def self.blank?(value)
return value.blank? if value.respond_to?(:blank?)
case value
when ::NilClass, ::FalseClass
true
when ::TrueClass, ::Numeric
false
when ::Array, ::Hash
value.empty?
when ::String
value !~ /\S/ ###This is the line 19 that has the issue.
else
value.nil? || (value.respond_to?(:empty?) && value.empty?)
end
end
end
当我尝试保存以下行时:
What Happens in The Garage Tin Sign2. � � Newsletter Our monthly newsletter,
它抛出错误。它在页面上:http://www.stationbay.com/。但奇怪的是,当我在网络浏览器中查看它时,它并没有在源代码中显示有趣的符号。
接下来我该怎么做?
【问题讨论】:
-
你能把编码的那行贴出来吗?
-
这是你要求的吗?
-
你到底传递了什么
value?这可能是问题的根源。 -
您的示例行工作正常(带有
#encoding: UTF-8magick 注释)。也许 Stack Overflow 会过滤掉无效字符?