iconv将来会被弃用,请改用String#encode

diy*_*iya 3 hpricot rspec ruby-on-rails soap4r iconv

当我运行rspec时,我收到了ruby 1.9.3-p125的以下弃用警告.但是ruby 1.9.2没有弃用的警告.

/gems/ruby-1.9.3-p125@cs/gems/soap4r-1.5.8/lib/xsd/iconvchars
et.rb:9:in `<top (required)>': iconv will be deprecated in the future, use String#encode instead.
/home/ec2-user/.rvm/gems/ruby-1.9.3-p125@cs/gems/hpricot-0.8.2/lib/hpricot/build
er.rb:2:in `require': /gems/ruby-1.9.3-p125@cs/gems/hpricot-0
.8.2/lib/fast_xs.so: undefined symbol: ruby_digitmap - /gems/
ruby-1.9.3-p125@cs/gems/hpricot-0.8.2/lib/fast_xs.so (LoadError)
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?有人可以帮忙解决这个问题.

dbr*_*ann 7

有一个ruby 1.9.3的建议将stdlibs移动到gems.作为此转换的一部分,不同字符串编码之间的转码将被"宝石化",请参阅Wiki(部分:应该对什么stdlib进行创作?).

因此,每次调用iconv时,都会显示弃用通知,以便通知开发人员ruby的未来版本将不使用lib/iconv并告诉他们(以及在何处)需要修改代码来解释这些计划变化.

目前这不成问题,因为将支持iconv和String #cat编码,以便让开发人员有时间进行转换.但是你应该记住,如果不切换不推荐的代码,你的代码将在未来版本中中断.

如有必要,快速谷歌搜索将帮助您进行转换,例如"从Iconv#iconv到String #coding".如果您不打算进行更改,则应远离未来版本,并在更新环境时格外小心.