代码之家  ›  专栏  ›  技术社区  ›  dennismonsewicz

Rails 3编码::兼容错误

  •  11
  • dennismonsewicz  · 技术社区  · 14 年前

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

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

    有人知道怎么解决这个问题吗?

    修复:这在webrick服务器上有效

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

    我不能让它在一个rails服务器上运行…还有人碰到这个吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Nilloc    12 年前

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

        2
  •  0
  •   danigb    12 年前

    我知道这是老问题了,但我也有同样的问题,解决办法就在“丹尼斯蒙塞维奇”给出的链接中。具体来说,代码是:

    是:

    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
    
        3
  •  0
  •   Community CDub    7 年前

    我通过将utf8文件转换为ascii解决了这个问题。 请看这里的答案: ruby 1.9 + sinatra incompatible character encodings: ASCII-8BIT and UTF-8