Ruby中的UTF-8错误
发布时间:2020-12-17 03:01:45 所属栏目:百科 来源:网络整理
导读:我正在抓几个网站,最终我遇到了一个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%准确.有没有办
我正在抓几个网站,最终我遇到了一个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修订版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/.但奇怪的是,当我在我的网络浏览器中查看它时,它不会在源代码中显示有趣的符号. 接下来我该怎么办? 解决方法
问题是你的字符串包含非UTF-8字符,但似乎强制使用UTF-8编码.以下简短代码演示了此问题:
a = "xff" a.force_encoding "utf-8" a.valid_encoding? # returns false a =~ /x/ # provokes ArgumentError: invalid byte sequence in UTF-8 解决此问题的最佳方法是从头开始应用正确的编码.如果这不是一个选项,您可以使用 a = "xff" a.force_encoding "utf-8" a.valid_encoding? # returns false a.encode!("utf-8","utf-8",:invalid => :replace) a.valid_encoding? # returns true now a ~= /x/ # works now (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |