2012-07-13 14 views
6

mam błąd incompatible character encodings: UTF-8 and ASCII-8BIT, gdy widok w bazie danych niektóre znaki, takie jak: N, A, E itdBłąd: Niezgodne kodowania znaków: UTF-8 i ASCII-8BIT

Moje środowisko jest:

  • szyn: 3.2.5
  • Ruby 1.9.4p194
  • bazy Oracle 10g (10.2.0.1.0)

Mogę zapisać te znaki w bazie danych, używając Ropucha.

Starałem się napisać to, w pierwszym wierszu moim zdaniem:

<% # encoding: utf-8 %> 

W enviroment.erb

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

Ale nic to ustalone.

Proszę, ktoś może coś doradzić, aby to naprawić.

Dzięki.

+0

Co to jest baza danych i zestaw znaków narodowych? 'wybierz * od v $ nls_parameter gdzie parametr taki jak"% CHARACTERSET''? –

+0

Jak zasugerowano na http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-inrub--1-9, powinieneś przeczytać i zrozumieć kodowanie znaków. Sugerowane linki są dobrym miejscem do rozpoczęcia. –

+0

dzięki @JustinCave za odpowiedź, sprawdzę to. –

Odpowiedz

0

W boot.rb pliku I dodaje wiersz:

ENV [ 'nls_lang '] AMERICAN_AMERICA.UTF8'=

Umożliwia m.in I rozwiązał problem.

5

Mam te same problemy i rozwiązałem je po kilku godzinach wyszukiwania z łatką małpy.

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 
Powiązane problemy