【问题标题】:error: invalid byte sequence in UTF-8 after upgrading ruby 1.8.7 to ruby 1.9.2错误:将 ruby​​ 1.8.7 升级到 ruby​​ 1.9.2 后,UTF-8 中的字节序列无效
【发布时间】:2024-05-21 10:15:02
【问题描述】:

我的应用在 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。 如何让它运行?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    @utf8_converter 变量不再需要,因为 Iconv 已被弃用,因此您可以只使用 utf8 方法。

    【讨论】:

      【解决方案2】:

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

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

      阅读更多here

      【讨论】:

        最近更新 更多