Rails 3 Encoding::CompatibilityError
Asked Answered
K

3

11

I am working on a rails app that submits a french translation via ajax and for some reason I keep getting the following error in the log:

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

Does anyone know how to fix this?

FIX:This works on the WEBrick sever

Place # encode: UTF-8 at the top of each file you want to work with different chars

I can't get this to work on a rails server with Thin... anyone else run into this?

Kaph answered 4/11, 2010 at 1:34 Comment(0)
K
2

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

the above link fixed my problem.

Specifically myString.force_encoding('UTF-8') on the string before sending it for translation.

Placed the sample code in the Application_controller.rb file and all is well

Kaph answered 4/11, 2010 at 19:37 Comment(2)
+1 for pasting the necessary code into the answer, would save others timeDresden
Code was on there for me, String.force_encoding('UTF-8') is the best workaround I've seen. Wasn't a problem until upgrading a server from 1.8.7 to 1.9.2Mazdaism
C
0

I know this is old, but I had the same problem and the solution was in the link @dennismonsewicz gave. In detail, the code was:

was:

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
Coating answered 28/11, 2012 at 10:41 Comment(0)
R
0

I fixed this issue by converting an utf8 file to ascii. See the answer here: ruby 1.9 + sinatra incompatible character encodings: ASCII-8BIT and UTF-8

Rearmost answered 8/5, 2014 at 21:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.