2012-03-18 14 views
8

मैं निम्नलिखित रेल एप्लिकेशन है, जो की जाँच करता है कि क्या दिया स्ट्रिंग कोरियाई वर्ण या नहीं होता है पर मेरी रूबी में कोड की पंक्ति:आतंक विरोधी चरित्र वर्ग regex

isKorean = !/\p{Hangul}/.match(word).nil? 

यह कंसोल में पूरी तरह से काम करता है, लेकिन एक को जन्म देती है वास्तविक ऐप के लिए वाक्यविन्यास त्रुटि:

invalid character property name {Hangul}: /\p{Hangul}/ 

मुझे क्या याद आ रही है और मैं इसे कैसे काम कर सकता हूं?

+0

क्या है कंसोल में और ऐप में '# {RUBY_VERSION} -p # {RUBY_PATCHLEVEL}" का परिणाम? –

उत्तर

13

यह एक वर्ण एन्कोडिंग मुद्दा है, आप जोड़ने की जरूरत है:।

# encoding: utf-8 

रूबी के शीर्ष करने के लिए फ़ाइल आप में है कि regex का उपयोग कर रहे आप शायद किसी भी एन्कोडिंग का उपयोग कर सकते हैं कि चरित्र वर्ग आप ' यदि आप चाहें तो यूटीएफ -8 की जगह मौजूद है। ध्यान दें कि रूबी 2.0 में, यूटीएफ -8 अब डिफ़ॉल्ट है, इसलिए रूबी 2.0+ में इसकी आवश्यकता नहीं है।

इसे "जादू टिप्पणी" के रूप में जाना जाता है। आप encoding in Ruby 1.9 के बारे में अधिक पढ़ सकते हैं और पढ़ सकते हैं। नोट रेल विचारों में है कि एन्कोडिंग स्वचालित रूप से config.encoding (सेट UTF-8 में डिफ़ॉल्ट रूप से config/application.rb में नियंत्रित किया जाता है।

यह संभावना कंसोल में काम कर रहा था अपने टर्मिनल UTF-8 पहले से ही उपयोग करने के लिए सेट कर दिया जाता है।

+1

बिल्कुल सही, धन्यवाद। 'application.rb' में यूटीएफ -8 में डिफ़ॉल्ट एन्कोडिंग सेट करने के बाद, मैं उम्मीद कर रहा था यह पूरे ऐप में काम करने के लिए। बाहर निकलता है, मैं गलत था। – Arnold

+2

@ आर्नोल्डशखनोव हाँ यह सेटिंग केवल दृश्यों पर लागू होती है (संभवतः क्योंकि रेल दृश्य को प्रस्तुत करते समय एन्कोडिंग सेट कर सकते हैं, लेकिन रूबी एक लोडिंग क्लास फाइल आदि है) । –

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