2012-07-13 19 views
6

私は、ビューがデータベースで見つかったエラーincompatible character encodings: UTF-8 and ASCII-8BIT、一部の文字のようだ:N、A、E、などエラー:互換性のない文字エンコーディング:UTF-8およびASCII-8BIT

マイ的環境は次のとおりです。

  • のRails:3.2.5
  • ルビー:1.9.4p194
  • データベース:Oracle 10gの(10.2.0.1.0)

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

私は、私の見解の1行目に、これを書いてみました:enviroment.erb

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

しかし、これを固定何で

<% # encoding: utf-8 %> 

してください、誰かがこれを修正するためにいくつかのアドバイスを与えることができます。

ありがとうございました。

+0

データベースと各国文字セットとは何ですか? 'select * from v $ nls_parameter '%CHARACTERSET'のようなパラメータはどこですか? –

+0

http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-in-ruby-1-9で提案されているように、文字エンコーディングについて読んで理解する必要があります。提案されたリンクは、始めるのに適しています。 –

+0

あなたの答えは@JustinCaveに感謝、私はこれをチェックするつもりです。 –

答えて

0

私はこの行を追加:

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

聖霊降臨祭この私は私の問題を解決しました。

5

私は同じ問題を抱えています。私は猿のパッチで何時間も検索した後に解決しました。ファイルboot.rbで

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 
関連する問題