2010-10-22 5 views
7

मैंने आरओआर 3.0.1 और रुबी को 1.9.2 तक अपग्रेड किया। अब मेरे विचारों में सभी स्ट्रिंग ASCII-8BIT हैं?रेलवे 3 में अपग्रेड करने के बाद सभी स्ट्रिंग ASCII-8BIT क्यों हैं?

मेरा मानना ​​है कि मैं अपने ऐप को UTF उपयोग करने के लिए स्थापित किया है 8

application.rb

config.encoding = "utf-8" 

database.yml

development: 
    adapter: mysql 
    encoding: utf8 

मैं चल रहा हूँ

OS X 
RVM rvm 1.0.16 
Ruby ruby-1.9.2-p0 
Rails 3.0.1 

मैं उम्मीद थी कि enoding यूटीएफ 8 नहीं ASCII

business.desc.encoding 
# ASCII-8BIT 

होगा के बाद से 1.9.x विभिन्न एन्कोडिंग हम इस तरह त्रुटियों की एक बहुत कुछ देखने के तार जोड़ सकते हैं।

<p class="description"><%= truncate(business.desc, :length => 17) %></p> 

त्रुटि

incompatible character encodings: ASCII-8BIT and UTF-8 

activesupport (3.0.1) lib/active_support/core_ext/string/output_safety.rb:74:in `concat' 
activesupport (3.0.1) lib/active_support/core_ext/string/output_safety.rb:74:in `concat' 
actionpack (3.0.1) lib/action_view/template/handlers/erb.rb:14:in `<<' 
app/views/browse/businesses.html.erb:15:in `block in _app_views_browse_businesses_html_erb___1616718260917998189_2173630500__1134905695726531092' 
app/views/browse/businesses.html.erb:3:in `each' 
app/views/browse/businesses.html.erb:3:in `each_with_index' 
app/views/browse/businesses.html.erb:3:in `_app_views_browse_businesses_html_erb___1616718260917998189_2173630500__1134905695726531092' 

किसी और को इस समस्या है? Ruby-1.9.2-p0 सही संस्करण का उपयोग करने के लिए है?

धन्यवाद!

+0

आप डेटाबेस वास्तव में utf-8 में है, क्योंकि एन्कोडिंग तर्क डेटाबेस एन्कोडिंग को परिभाषित नहीं करता है। आपके पास अन्य एन्कोडिंग – shingara

उत्तर

4

आपको इसे प्रत्येक में जोड़ना होगा।आरबी फ़ाइल:

<% # coding: UTF-8 %> 

मैं इसके लिए मणि magic_encoding का उपयोग करता हूं।

$ cd app/ 
$ magic_encoding 

डिफ़ॉल्ट यूटीएफ -8 है, लेकिन आप जो कुछ भी तर्क के रूप में चाहते हैं उसे निर्दिष्ट कर सकते हैं।

6

भयानक मुद्दा। आप प्रत्येक फ़ाइल

# coding: UTF-8 

अद्यतन उपयोग magic_encoding रूप Nerian हो वर्णित के शीर्ष पर इस डाल करने के लिए की जरूरत है।

अनिवार्य रूप से नीचे जैसा ही है, लेकिन बेहतर है।

/अपडेट

मैं एक रेक कार्य मुझे याद नहीं है जहाँ मैं (है कि पुरुष के लिए प्रशंसा!) जो मैं थोड़ा संशोधित है पाया, प्रत्येक फ़ाइल के शीर्ष पर इस करना होगा। मैंने सुना है लोग कहते हैं कि इसके बाद के संस्करण (आप क्या किया है) पर्याप्त होना चाहिए, लेकिन यह मेरे लिए काम नहीं करता है ...

किसी भी तरह, इस रेक काम है, बस इसे


पेस्ट कॉपी
lib/tasks/utf8encode.rake 

# coding: UTF-8 

desc "Manage the encoding header of Ruby files" 
task :utf8_encode_headers => :environment do 
    files = Array.new 
    ["*.rb", "*.rake"].each do |extension| 
    files.concat(Dir[ File.join(Dir.getwd.split(/\\/), "**", extension) ]) 
    end 

    files.each do |file| 
    content = File.read(file) 
    next if content[0..16] == "# coding: UTF-8\n\n" || 
      content[0..22] == "# -*- coding: utf-8 -*-" 

    ["\n\n", "\n"].each do |file_end| 
     content = content.gsub(/(# encoding: UTF-8#{file_end})|(# coding: UTF-8#{file_end})|(# -*- coding: UTF-8 -*-#{file_end})|(# -*- coding: utf-8 -*-#{file_end})/i, "") 
    end 

    new_file = File.open(file, "w") 
    new_file.write("# coding: UTF-8\n\n"+content) 
    new_file.close 
    end 
end 
2

मैं रुबी 1.8.6 और रेल 2.3.5 से रुबी 1.9.2 और रेल 3.0.3, पोस्टग्रेस्क्ल के साथ आगे बढ़ रहा हूं।

<% # coding: UTF-8 %> 

रेक ओले द्वारा प्रदान की काम करने के लिए संशोधित करने के लिए आसान होना चाहिए: आदेश अपने प्रोजेक्ट पर काम कर रहे इस पाने के लिए, मैं मेरे विचार टेम्पलेट्स में से किसी के ऊपर है कि अनुवाद किया जा रहा था में जोड़ना करना पड़ा यह भी। मुझे उसका समाधान नहीं मिला क्योंकि दिया गया था, हालांकि इसका कोई प्रभाव पड़ा।

+0

हैह में डेटाबेस हो सकता है ... ऐसा लगता है कि मुझे 20 मिनट तक पीटा गया था! 3 महीने के पुराने सवाल पर क्या संभावना है। यह magic_encoding मणि पर एक अच्छी टिप है - मैं निश्चित रूप से खुद को कोशिश कर रहा हूँ। –

संबंधित मुद्दे