2009-11-22 9 views
7

मैं निम्न त्रुटि हो रही है में UTF-8। ऐसा तब होता है जब उपयोगकर्ता गैर-ASCII मानक वर्ण प्रस्तुत करता है।असंगत वर्ण एन्कोडिंग: मेरे रूबी 1.9 & रेल 2.3.4 के साथ ASCII-8bit और रूबी 1.9

मैं ऑनलाइन संसाधनों का एक बहुत पढ़ा, लेकिन कोई भी एक समाधान है कि काम किया है लगता है।

मैं का उपयोग कर (कुछ संसाधनों सुझाव के रूप में)

string.force_encoding('utf-8') 

की कोशिश की, लेकिन यह मदद नहीं की।

कोई विचार यह कैसे हल करें? क्या डीबी को बचाने से पहले ऐसे पात्रों को खत्म करने का कोई तरीका है? या, उन्हें दिखाने के लिए एक तरीका है?

+4

Yehuda Katz ब्लॉग पर इस बारे में एक अच्छा पोस्ट है: http: // yehudakatz.com/2010/05/17/encodings-unabridged/ – makevoid

+0

मैं थोड़ी देर के लिए इसके साथ लड़ रहा हूं। MySQL 2 मणि ​​काम नहीं किया था, न ही किसी अन्य समाधान का सुझाव दिया गया था। अन्य खोजकर्ताओं के लिए जो इस पर ठोकर खा सकते हैं: यदि आप mysql में ब्लॉब या कुछ अन्य डेटा प्रकार का उपयोग कर रहे हैं, तो इसे स्ट्रिंग या टेक्स्ट में बदलें। यह एन्कोडिंग और कोई और सिरदर्द बनाए रखता है। –

उत्तर

1

मैं रूबी (या रेल) ​​के बारे में पता नहीं है, लेकिन मुझे लगता है समस्या अपने वर्ण एन्कोडिंग पर नियंत्रण की कमी के कारण होता है।

सबसे पहले, आपको यह तय करना चाहिए कि आप अपने डेटाबेस में कौन सी एन्कोडिंग संग्रहीत कर रहे हैं। फिर, आपको डेटाबेस में संग्रहीत करने से पहले सभी टेक्स्ट को उस एन्कोडिंग में कनवर्ट करना सुनिश्चित करना होगा। ऐसा करने के लिए, आपको सबसे पहले यह पता होना चाहिए कि किस एन्कोडिंग के साथ शुरुआत करना है। सलाह के

एक बार दोहराया टुकड़ा आप इसे पर नियंत्रण प्राप्त करने के बाद, जितनी जल्दी हो सके सभी इनपुट जो कुछ एन्कोडिंग से इसे इस्तेमाल करता है डिकोड करने के लिए यूनिकोड को (अपनी भाषा में यह समर्थन करता है) है। फिर आप जानते हैं कि आपके प्रोग्राम में आपके द्वारा संभाले गए सभी पाठ यूनिकोड हैं। दूसरी तरफ, टेक्स्ट को एन्कोड करने के लिए जो भी आउटपुट-एन्कोडिंग आप इसे आउटपुट करने से पहले अंतिम चरण के रूप में चाहते हैं।

कुंजी हमेशा पता करने के लिए जो एन्कोडिंग टेक्स्ट का एक हिस्सा अपने कोड में किसी भी स्थान पर उपयोग कर रहा है।

10

रूबी 1.9 और रेल 3.0.x के लिए, mysql2 अनुकूलक का उपयोग करें।

अपने gemfile में:

gem 'mysql2', '~> 0.2.7' 

और करने के लिए अपने database.yml अद्यतन:

adapter: mysql2 

http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/

+1

धन्यवाद, यह मेरे लिए बहुत अच्छा काम करता है। लेकिन चेतावनी दीजिये कि mysql2 v0.3। * रेल 3.0.7 के साथ त्रुटियों को फेंकता है। http://stackoverflow.com/questions/3467054/problem-with-mysql2-and-rails3- बंडलर – aNoble

+1

मैं 'रैक-वेबकोनोल' का उपयोग करते हुए 'असंगत चरित्र एन्कोडिंग्स: ASCII-8BIT और UTF-8' के साथ संघर्ष कर रहा था' - तब मुझे यह पोस्ट मिला। धन्यवाद, @ जॉनी फंग! –