Rails 3 编码兼容性错误

11
我正在开发一个Rails应用程序,通过ajax提交一份法语翻译,但不知何故,我在日志中不断收到以下错误信息:Encoding::CompatibilityError incompatible character encodings: UTF-8 and ASCII-8BIT。有人知道如何解决这个问题吗?
解决方法:这可以在WEBrick服务器上解决。在要使用不同字符的每个文件顶部放置# encode: UTF-8
我无法在Thin Rails服务器上实现这个解决方案...还有其他人遇到过这种情况吗?
3个回答

2

这个链接解决了我的问题。

具体来说,在将字符串发送到翻译之前,需要在字符串上调用myString.force_encoding('UTF-8')方法。

将示例代码放置在Application_controller.rb文件中即可。


请将必要的代码粘贴到答案中,这样可以节省其他人的时间。 - tmaximini
代码对我来说很有用,String.force_encoding('UTF-8') 是我见过的最好的解决方法。直到将服务器从1.8.7升级到1.9.2之前,这都不是一个问题。 - Nilloc

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接