2012-07-13 9 views
6

मैं त्रुटि incompatible character encodings: UTF-8 and ASCII-8BIT, मिल गया दृश्य डेटाबेस में पाया की तरह कुछ अक्षर जब: ई, ए एन, आदित्रुटि: असंगत वर्ण एन्कोडिंग: UTF-8 और ASCII-8bit

मेरे वातावरण है:

  • रेल: 3.2.5
  • रूबी: 1.9.4p194
  • डेटाबेस: Oracle 10g (10.2.0.1.0)

मैं टोड का उपयोग कर डेटाबेस में इन वर्णों को सहेज सकता हूं।

मैं इस लिखने का प्रयास किया, मेरे विचार की पहली पंक्ति में:

<% # encoding: utf-8 %> 

enviroment.erb में

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

लेकिन कुछ भी नहीं इस तय की।

कृपया, क्या कोई इसे ठीक करने के लिए कुछ सलाह दे सकता है।

धन्यवाद।

+0

डेटाबेस और राष्ट्रीय चरित्र सेट क्या है? 'v $ nls_parameter से * चुनें * जहां पैरामीटर '% CHARACTERSET' 'है? –

+0

जैसा कि http://stackoverflow.com/questions/1779740/incompatible-character-encodings-ascii-8bit-and-utf-8-in-ruby-1-9 में सुझाया गया है, आपको चरित्र एन्कोडिंग के बारे में पढ़ना और समझना चाहिए। सुझाए गए लिंक शुरू करने के लिए एक अच्छी जगह है। –

+0

आपके उत्तर के लिए @ जस्टिनकेव धन्यवाद, मैं इसे जांचूंगा। –

उत्तर

0

फ़ाइल boot.rb में मैं इस लाइन को जोड़ा।

5

मेरे पास एक ही समस्या है, और मैंने बंदर पैच के साथ घंटों के बाद इसे हल किया।

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

कण मेरी समस्या यह मैं हल:

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 
संबंधित मुद्दे