11

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

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

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

FIX:这适用于 WEBrick 服务器

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

我不能让它在带有 Thin 的 Rails 服务器上工作......其他人遇到这个吗?

4

3 回答 3

2

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 文件中,一切正常

于 2010-11-04T19:37:41.277 回答
0

我通过将 utf8 文件转换为 ascii 解决了这个问题。在这里查看答案:ruby 1.9 + sinatra 不兼容的字符编码:ASCII-8BIT 和 UTF-8

于 2014-05-08T21:27:26.950 回答
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
于 2012-11-28T10:41:53.260 回答