Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby स्ट्रिंग्स रहस्योद्घाटन: ASCII और Unicode एन्कोडिंग मास्टर करना

वास्तविक दुनिया में ASCII

संख्याओं को स्ट्रिंग्स में मैप करने की यह पूरी चीज़ पर्दे के पीछे आपके लिए होती है।

लेकिन कुछ व्यावहारिक उपयोग हैं!

उदाहरण के लिए:

HTTP स्पेसिफिकेशन URLs के अंदर कुछ कैरेक्टर्स की अनुमति नहीं देता।

लेकिन आप इन अमान्य कैरेक्टर्स को ASCII फॉर्मेट में एन्कोड कर सकते हैं और अधिकांश आधुनिक वेब सर्वर उन्हें सही ढंग से व्याख्या करेंगे।

 example.com/a+++ => example.com/a%2B%2B%2B 

%2B क्या है?

यह ASCII-एन्कोडेड फॉर्मेट में कैरेक्टर + है।

आप इस ज्ञान का उपयोग कैरेक्टर्स को ट्रांसफॉर्म करने के लिए भी कर सकते हैं।

उदाहरण के लिए:

यदि आप ASCII टेबल को देखते हैं, तो आप देखेंगे कि आप एक लोअरकेस कैरेक्टर को अपरकेस में बदल सकते हैं उससे 32 घटाकर।

 ("a".ord - 32).chr # "A" 

यह दूसरी तरफ भी काम करता है।

 ("A".ord + 32).chr # "a" 

हाँ।

Ruby में, हमारे पास upcase और downcase मेथड्स हैं।

लेकिन यह किसी प्रकार के इंटरव्यू प्रश्न, कोडिंग चैलेंज, या इसी तरह की स्थिति में आपके लिए मददगार हो सकता है।

Unicode क्या है?

ASCII केवल 127 अलग-अलग कैरेक्टर्स (एक्सटेंडेड ASCII के साथ 256) एन्कोड कर सकता है, यह सीमित करता है कि हम कौन से कैरेक्टर्स प्रतिनिधित्व कर सकते हैं।

समाधान?

Unicode।

Unicode एक स्ट्रिंग एन्कोडिंग सिस्टम है जो दस लाख अलग-अलग कैरेक्टर्स तक प्रतिनिधित्व कर सकता है।

यह ASCII से बहुत अधिक स्थान है!

अब हम सभी प्रकार की भाषाओं, नए सिम्बल्स और यहां तक कि इमोजी से कैरेक्टर्स शामिल कर सकते हैं।

यहाँ कुछ Unicode है:

 ɑΩϕβΣπ 

ये ग्रीक अल्फाबेट के कैरेक्टर्स हैं जिन्हें ASCII का उपयोग करके प्रदर्शित नहीं किया जा सकता।

Ruby में Unicode का उपयोग कैसे करें

Ruby में Unicode के लिए सपोर्ट है, यह Ruby 1.9 से डिफ़ॉल्ट रूप से सक्षम है।

तो आप ऐसा कर सकते हैं:

 π = 3.141592 

या यह:

 def ★★★
  puts "आपको 3 स्टार मिले, बहुत बढ़िया काम!"
end
★★★ # "आपको 3 स्टार मिले, बहुत बढ़िया काम!" 

बहुत मजेदार!

लेकिन शायद इन सिम्बल्स का उपयोग करके मेथड्स और वेरिएबल्स को परिभाषित करना इतना व्यावहारिक नहीं है क्योंकि वे हमारे कीबोर्ड में नहीं हैं।

वास्तव में, वैध, अदृश्य Unicode कैरेक्टर्स हैं।

उदाहरण:

 def ​
  puts "अदृश्य मेथड"
end
​ 

यह एक नाम के बिना मेथड की तरह दिखता है, जो सामान्य रूप से अनुमत नहीं है।

लेकिन यह उस अदृश्य Unicode कैरेक्टर के कारण काम करता है!

स्ट्रिंग एन्कोडिंग मेथड्स

Ruby में विभिन्न एन्कोडिंग सिस्टम्स के साथ काम करने के लिए मेथड्स हैं।

उदाहरण के लिए:

 "abc".encoding.name # "UTF-8" 

कुछ विशेष परिदृश्य हैं जहां वर्तमान एन्कोडिंग (encoding.name) स्ट्रिंग के वास्तविक एन्कोडिंग से मेल नहीं खाता।

आप इसे वेबसाइट, फाइल, डेटाबेस या किसी अन्य बाहरी स्रोत से डेटा पढ़ते समय पा सकते हैं।

इसके परिणामस्वरूप एक InvalidByteSequenceError होगा।

यदि ऐसा होता है तो आपको एन्कोडिंग बदलने की आवश्यकता होगी।

कैसे?

encode मेथड का उपयोग करके:

 "abcΣΣΣ".encode("ASCII", "UTF-8", undef: :replace) # "abc???" 

मैं UTF-8 (Unicode) से ASCII में कन्वर्ट कर रहा हूँ, और क्योंकि Σ कैरेक्टर ASCII में उपलब्ध नहीं है, हम Ruby को इसे बदलने के लिए कहते हैं।

डिफ़ॉल्ट रूप से, यह अपरिभाषित कैरेक्टर्स को क्वेश्चन मार्क्स से बदल देता है।

लेकिन आप इसे बदल सकते हैं।

इस तरह:

 "abcΣΣΣ".encode("ASCII", "UTF-8", invalid: :replace, undef: :replace, replace: "") # "abc" 

या "फॉलबैक" विकल्प का उपयोग करके:

 "abcΣΣΣ".encode("ASCII", "UTF-8", fallback: {"Σ" => "E"}) # "abcEEE" 

यह कह रहा है:

"UTF-8 (Unicode) से ASCII में सभी कैरेक्टर्स बदलें, उन कैरेक्टर्स का अनुवाद करने के लिए फॉलबैक हैश का उपयोग करें जो ASCII में मौजूद नहीं हैं"।

एक और मेथड, force_encoding, इस अनुवाद चरण के बिना एन्कोडिंग बदलता है।

उदाहरण:

 "abc½½½".force_encoding("iso-8859-1") 

आप Encoding.aliases मेथड के साथ उपलब्ध एन्कोडिंग्स की सूची प्राप्त कर सकते हैं।

सारांश

आपने सीखा कि कंप्यूटर एन्कोडिंग टेबल्स का उपयोग करके संख्याओं से कैरेक्टर्स कैसे बनाते हैं! आपने Ruby में ASCII और Unicode के बारे में भी सीखा।

अब अपना एडिटर खोलें और अभ्यास करने में कुछ मज़ा लें 😃

पढ़ने के लिए धन्यवाद।


  1. रूबी में सिलेक्शन सॉर्ट में महारत: चरण-दर-चरण कार्यान्वयन रूबी में सिलेक्शन सॉर्ट में महारत: चरण-दर-चरण कार्यान्वयन

    नोट: यह रूबी के साथ विभिन्न सॉर्टिंग एल्गोरिदम को देखने वाली श्रृंखला का भाग 2 है। भाग 1 ने बबल सॉर्ट का पता लगाया। इस पोस्ट में, मैं रूबी के साथ सिलेक्शन सॉर्ट एल्गोरिदम को लागू करने के तरीके के बारे में बताऊंगा। सिलेक्शन सॉर्ट एक इन-प्लेस तुलना सॉर्टिंग एल्गोरिदम है। इसका मतलब है कि सॉर्ट किए गए

  1. रूबी के साथ इंसर्शन सॉर्ट में महारत: एक चरण-दर-चरण गाइड रूबी के साथ इंसर्शन सॉर्ट में महारत: एक चरण-दर-चरण गाइड

    नोट: यह रूबी के साथ विभिन्न सॉर्टिंग एल्गोरिदम को लागू करने पर एक श्रृंखला का भाग 4 है। भाग 1 ने बबल सॉर्ट का पता लगाया, भाग 2 ने सिलेक्शन सॉर्ट का पता लगाया, और भाग 3 ने मर्ज सॉर्ट का पता लगाया। जैसा कि हम डेटा को सॉर्ट करने के लिए विभिन्न पद्धतियों का पता लगाना जारी रखते हैं, हम इंसर्शन सॉर्ट की

  1. रूबी स्ट्रिंग फॉर्मेटिंग आसान: लीडिंग जीरोज, कॉलम और printf स्टाइल रूबी स्ट्रिंग फॉर्मेटिंग आसान: लीडिंग जीरोज, कॉलम और printf स्टाइल

    आइए बात करते हैं कि आप रूबी में स्ट्रिंग्स को कैसे फॉर्मेट कर सकते हैं। आप स्ट्रिंग को फॉर्मेट क्यों करना चाहेंगे? खैर, आप ऐसी चीजें करना चाह सकते हैं जैसे नंबर 10 से कम होने पर भी लीडिंग ज़ीरो हो (उदाहरण: 01, 02, 03...), या कुछ कंसोल आउटपुट को कॉलम में अच्छी तरह से फॉर्मेट किया गया हो। अन्य भाषाओं