Rails 3 Encoding :: CompatibilityError

时间:2010-11-04 01:34:30

标签: ruby-on-rails utf-8 thin

我正在开发一个通过ajax提交法语翻译的rails应用程序,由于某种原因,我在日志中不断收到以下错误:

Encoding::CompatibilityError incompatible character encodings: UTF-8 and ASCII-8BIT

有谁知道如何解决这个问题?

FIX:这适用于WEBrick服务器

# encode: UTF-8放在要使用不同字符的每个文件的顶部

我无法让这个在带有Thin的rails服务器上工作......其他人遇到了这个吗?

3 个答案:

答案 0 :(得分:1)

https://rails.lighthouseapp.com/projects/8994/tickets/4336-ruby19-submitted-string-form-parameters-with-non-ascii-characters-cause-encoding-errors

以上链接解决了我的问题。

特别是myString.force_encoding('UTF-8')字符串,然后再发送给它进行翻译。

将示例代码放在Application_controller.rb文件中,一切都很好

答案 1 :(得分:0)

我知道这是旧的,但我有同样的问题,解决方案是@dennismonsewicz给出的链接。详细地说,代码是:

是:

before_filter :force_utf8_params

  def force_utf8_params
    traverse = lambda do |object, block|
      if object.kind_of?(Hash)
        object.each_value { |o| traverse.call(o, block) }
      elsif object.kind_of?(Array)
        object.each { |o| traverse.call(o, block) }
      else
        block.call(object)
      end
      object
    end
    force_encoding = lambda do |o|
      o.force_encoding(Encoding::UTF_8) if o.respond_to?(:force_encoding)
    end
    traverse.call(params, force_encoding)
  end

答案 2 :(得分:0)

我通过将utf8文件转换为ascii来修复此问题。 请在此处查看答案:ruby 1.9 + sinatra incompatible character encodings: ASCII-8BIT and UTF-8