/ / रूबी गतिशील रूप से यूनिकोड स्ट्रिंग थ्रो "अवैध यूनिकोड भागने" त्रुटि बनाने की कोशिश कर रहा है - माणिक, स्ट्रिंग, गतिशील, यूनिकोड

रूबी गतिशील रूप से यूनिकोड स्ट्रिंग को बनाने की कोशिश कर रहा है "अमान्य यूनिकोड एस्केप" त्रुटि - रूबी, स्ट्रिंग, गतिशील, यूनिकोड

मेरे पास एक आवश्यकता है जिसमें मैं डायनामिक रूप से इंटरपोलेशन का उपयोग करके एक यूनिकोड स्ट्रिंग बनाना चाहता हूं। उदाहरण के लिए। कृपया देखें कि निम्नलिखित कोड irb में आज़माया गया है

2.1.2 :016 > hex = 0x0905
=> 2309
2.1.2 :017 > b = "u#{hex}"
SyntaxError: (irb):17: invalid Unicode escape
b = "u#{hex}"

हेक्स-कोड 0x0905 DEVANAGARI LETA ए के लिए स्वतंत्र स्वर के लिए यूनिकोड से मेल खाता है।

मैं यह पता लगाने में असमर्थ हूं कि वांछित परिणाम कैसे प्राप्त किया जाए।

उत्तर:

जवाब के लिए 3 № 1

आप एन्कोडिंग को पास कर सकते हैं Integer#chr:

hex = 0x0905
hex.chr("utf-8") #=> "अ"

पैरामीटर छोड़ा जा सकता है, यदि Encoding::default_internal utf-8 पर सेट किया गया है:

$ ruby -E utf-8:utf-8 -e "p 0x0905.chr"
"अ"

आप कोड स्ट्रिंग्स को अन्य स्ट्रिंग्स में भी जोड़ सकते हैं:

"" << hex #=> "अ"

उत्तर № 2 के लिए 1

स्ट्रिंग इंटरपोलेशन होता है बाद माणिक पलायन को रोक देता है, इसलिए आप जो कर रहे हैं उसकी व्याख्या एक अधूरे बच की तरह माणिक द्वारा की जाती है।

एक संख्या से एक यूनिकोड वर्ण बनाने के लिए, आपको करने की आवश्यकता है pack यह:

hex = 0x0905
[hex].pack("U")
=> "अ"