7

ビューがデータベースで見つかったときにエラーが発生incompatible character encodings: UTF-8 and ASCII-8BITしました:ñ、á、éなど。

私の環境は次のとおりです。

  • レール:3.2.5
  • Ruby:1.9.4p194
  • データベース:Oracle 10g(10.2.0.1.0)

Toadを使用して、この文字をデータベースに保存できます。

私はこれを私の見解の最初の行に書き込もうとしました:

<% # encoding: utf-8 %>

enviroment.erb

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

しかし、これを修正するものは何もありません。

誰かがこれを修正するためのアドバイスをしてもらえますか?

ありがとう。

4

2 に答える 2

6

同じ問題があり、モンキーパッチで何時間も検索した後、問題を解決しました。

    module ActiveSupport #:nodoc:
      class SafeBuffer < String

        def safe_concat(value)
          value = force_utf8_encoding(value)
          raise SafeConcatError unless html_safe?
          original_concat(value)
        end

        def concat(value)
          value = force_utf8_encoding(value)
          if !html_safe? || value.html_safe?
            super(value)
          else
            super(ERB::Util.h(value))
          end
        end

        alias << concat

        private

        def force_utf8_encoding(value)
          self.force_encoding('UTF-8').html_safe unless self.encoding.name == 'UTF-8'
          value = (value).force_encoding('UTF-8').html_safe unless value.nil? || value.encoding.name == 'UTF-8'
          value
        end
      end
    end
于 2013-05-24T14:39:02.777 に答える
0

ファイルboot.rbに、次の行を追加しました。

ENV['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'

これで問題は解決しました。

于 2013-06-27T20:27:07.857 に答える