2012-07-13 21 views
6

Tengo el error incompatible character encodings: UTF-8 and ASCII-8BIT, cuando la vista se encuentra en la base de datos algunos personajes como: ñ, á, é, etc.error: incompatibles codificaciones de caracteres: UTF-8 y ASCII-8BIT

Mi entorno es:

  • Carriles: 3.2.5
  • Ruby: 1.9.4p194
  • Base de datos: 10g Oracle (10.2.0.1.0)

Puedo guardar estos caracteres en la base de datos, usando Toad.

Traté de escribir esto, en la primera línea de mi punto de vista:

<% # encoding: utf-8 %> 

En enviroment.erb

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

Pero nada fijado esto.

Por favor, alguien puede dar un consejo para arreglar esto.

Gracias.

+0

¿Cuál es la base de datos y el conjunto de caracteres nacionales? 'select * from v $ nls_parameter donde parámetro como '% CHARACTERSET''? –

+0

Como se sugiere en http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-in-ruby-1-9, debería leer y comprender las codificaciones de caracteres. Los enlaces sugeridos son un buen lugar para comenzar. –

+0

gracias a @JustinCave por su respuesta, voy a comprobar esto. –

Respuesta

0

En el boot.rb archivo que he añade esta línea:

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

Whit presente he resuelto mi problema.

5

Tengo los mismos problemas, y lo resolví después de horas de búsqueda con un parche de mono.

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 
Cuestiones relacionadas