2012-07-13 10 views
6

ho ottenuto l'errore incompatible character encodings: UTF-8 and ASCII-8BIT, quando la vista trovato nel database alcuni personaggi come: ñ, A, E, eccErrore: incompatibili codifiche di caratteri: UTF-8 e ASCII-8BIT

Il mio ambiente è:

  • Rails: 3.2.5
  • Rubino: 1.9.4p194
  • database: Oracle 10g (10.2.0.1.0)

Posso salvare questi caratteri nel database, usando Toad.

Ho cercato di scrivere questo, nella prima riga del mio punto di vista:

<% # encoding: utf-8 %> 

In enviroment.erb

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

Ma niente risolto questo.

Per favore, qualcuno può dare qualche consiglio per risolvere questo.

Grazie.

+0

Qual è il database e il set di caratteri nazionali? 'selezionare * da v $ nls_parameter dove parametro come '% CHARACTERSET''? –

+0

Come suggerito in http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-in-ruby-1-9 dovresti leggere e capire le codifiche dei caratteri. I collegamenti suggeriti sono un buon punto di partenza. –

+0

grazie a @JustinCave per la tua risposta, controllerò questo. –

risposta

0

Nel file boot.rb ho aggiunto questa linea:

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

Pentecoste questo ho risolto il mio problema.

5

Ho gli stessi problemi e l'ho risolto dopo ore di ricerca con una patch di scimmia.

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 
Problemi correlati