Rails 3 Encoding :: CompatibilityError - PullRequest
11 голосов
/ 04 ноября 2010

Я работаю над приложением rails, которое отправляет французский перевод через ajax, и по какой-то причине я продолжаю получать следующую ошибку в журнале:

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

Кто-нибудь знает, какчтобы это исправить?

ИСПРАВЛЕНИЕ: Это работает на сервере WEBrick

Поместите # encode: UTF-8 вверху каждого файла, с которым вы хотите работать с различными символами

Я могучтобы это работало на сервере rails с Thin ... кто-нибудь еще сталкивался с этим?

Ответы [ 3 ]

1 голос
/ 04 ноября 2010

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 и все хорошо

0 голосов
/ 09 мая 2014

Я исправил эту проблему, преобразовав файл utf8 в ascii.Смотрите ответ здесь: ruby ​​1.9 + несовместимые с sinatra кодировки символов: ASCII-8BIT и UTF-8

0 голосов
/ 28 ноября 2012

Я знаю, что это старый, но у меня была та же проблема, и решение было в ссылке, которую дал @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
...