错误:将ruby 1.8.7升级到ruby 1.9.2后,UTF-8中的字节序列无效

时间:2012-03-14 12:19:37

标签: ruby-on-rails ruby ruby-on-rails-3 utf

我的应用程序在ruby 1.8.7和rails 3.0.11中运行,我使用1.9.2 ruby​​和rails 3.2.2升级它。 它有像这样的utf转换器

@utf8_converter = Iconv.new('UTF-8//IGNORE', 'UTF-8')
......  
......
def utf8(untrusted_string)
valid_string = @utf8_converter.iconv(untrusted_string + ' ')[0..-2]
return valid_string

我的理解Iconv不支持ruby 1.9.2。 怎么能让它运行?

由于

2 个答案:

答案 0 :(得分:1)

我相信这应该让你走上正轨:

def utf8(untrusted_string) 
  valid_string = (untrusted_string + ' ').encode('utf-8')
  return valid_string
end

不再需要@utf8_converter变量,因为不推荐使用Iconv,因此您只需使用utf8方法即可。

答案 1 :(得分:0)

Ruby 1.9.2确实支持Iconv,如果你通过rvm使用ruby,你应该按照以下方式安装它,

$ rvm pkg install iconv
$ rvm reinstall 1.9.2 --with-iconv-dir=$rvm_path/usr

了解更多here