11

ajax を介してフランス語の翻訳を送信する Rails アプリに取り組んでいますが、何らかの理由でログに次のエラーが表示され続けます。

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

これを修正する方法を知っている人はいますか?

修正: これは 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 incompatible character encodings: ASCII-8BIT and 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 に答える