2012-07-13 2 views
6

Je suis l'erreur incompatible character encodings: UTF-8 and ASCII-8BIT, lorsque la vue trouvée dans la base de données des personnages tels que: ñ, á, é, etc.Erreur: Incompatible codages de caractères: UTF-8 et ASCII-8BIT

Mon environnement est:

  • Rails 3.2.5
  • Ruby: 1.9.4p194
  • Base de données: Oracle 10g (10.2.0.1.0)

Je peux enregistrer ces caractères dans la base de données, en utilisant Toad.

J'ai essayé d'écrire ce, dans la première ligne de mon point de vue:

<% # encoding: utf-8 %> 

Dans enviroment.erb

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

Mais rien fixé cela.

S'il vous plaît, quelqu'un peut-il donner un corrigé ce à conseillé.

Merci.

+0

Qu'est-ce que la base de données et de caractère national? 'select * from v $ nls_parameter où paramètre comme '% CHARACTERSET''? –

+0

Comme suggéré dans http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-in-ruby-1-9 vous devriez lire et comprendre codages de caractères. Les liens suggérés sont un bon point de départ. –

+0

merci @JustinCave pour votre réponse, je vais vérifier cela. –

Répondre

0

Dans le fichier boot.rb j'ajouté cette ligne:

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

Whit ce que je résolu mon problème.

5

J'ai les mêmes questions, et je résolus après des heures de recherche avec un patch de singe.

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 
Questions connexes