Ruby 2.0 iconv替换
我不知道Ruby但想要运行一个脚本,其中:
D:/Hather /Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:在`require’:无法加载这样的文件 – iconv(LoadError)
如果我评论iconv代码它会以某种方式工作,但如果我可以重新编码这部分它会更好:
return Iconv.iconv('UTF-8//IGNORE', 'UTF-8', (s + ' ') ).first[0..-2]
没有iconv
。 也许我可以在某种程度上使用String#encode
#coding?
Iconv在1.9.3中被弃用(删除)。 你仍然可以安装它。
参考资料如果您不确定: https : //rvm.io/packages/iconv/
但是建议你不要而是使用:
string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?")
API
从Ruby 2.1开始,可以使用String#scrub 。
str.scrub(''), str.scrub{ |bytes| '' }
相关问题: Ruby 1.9.X中的Iconv.conv(“UTF-8 // IGNORE”,…)的等价物?
如果你不在Ruby 2.1上,那么不能使用String#scrub
那么下面将忽略不正确UTF-8编码的字符串的所有部分。
string.encode('UTF-16', :invalid => :replace, :replace => '').encode('UTF-8')
编码方法几乎完全符合你的要求,但是如果认为字符串已经是UTF-8,那么编码就不会做任何事情。 因此,您需要更改编码,通过编码仍然可以编码UTF-8可以编码的全套unicode字符。 (如果你不这样做,你会破坏任何不在那种编码中的字符 – 7位ASCII将是一个非常糟糕的选择!)
我没有幸运使用单行string.encode本身的各种方法
但是我写了一个在MRI pre 2.1中实现String#scrub的回填,或其他没有它的ruby。
- 使用carrierwave在gif中获取第一张图像
- 升级到ruby 2.3.0 NameError:uninitialized constant I18n :: Config :: Backend
- Ruby ActiveRecord和sql元组支持
- Rails 4 – best_in_place gem和多对多关联
- 如何设置电子邮件的设计发件人名称?
- Ruby On Rails,周数不正确(-1)
- 法拉第:: ConnectionFailed,连接被拒绝 – 连接(2)为“localhost”端口9200错误Ruby on Rails
- Ruby Net :: SMTP – 使用密件抄送:收件人发送电子邮件
- ruby中的levenshtein_distance