[javascript] मैं भागने वाले यूनिकोड के साथ एक स्ट्रिंग कैसे डीकोड करूं?


Answers

अद्यतन : कृपया ध्यान दें कि यह एक समाधान है जो पुराने ब्राउज़र या गैर-ब्राउज़र प्लेटफ़ॉर्म पर लागू होना चाहिए, और निर्देशपरक उद्देश्यों के लिए जीवित रखा गया है। कृपया अधिक अद्यतित उत्तर के लिए नीचे @radicand का उत्तर देखें।

यह एक यूनिकोड है, बच निकला स्ट्रिंग। सबसे पहले स्ट्रिंग से बच निकला, फिर यूनिकोड के साथ एन्कोड किया गया। वापस सामान्य में बदलने के लिए:

var x = "http\\u00253A\\u00252F\\u00252Fexample.com";
var r = /\\u([\d\w]{4})/gi;
x = x.replace(r, function (match, grp) {
    return String.fromCharCode(parseInt(grp, 16)); } );
console.log(x);  // http%3A%2F%2Fexample.com
x = unescape(x);
console.log(x);  // http://example.com

व्याख्या करने के लिए: मैं \u0025 देखने के लिए एक नियमित अभिव्यक्ति का उपयोग करता \u0025 । हालांकि, चूंकि मुझे अपने प्रतिस्थापन ऑपरेशन के लिए केवल इस स्ट्रिंग का एक हिस्सा चाहिए, इसलिए मैं उस हिस्से को अलग करने के लिए ब्रांड्स का उपयोग करता हूं जिसे मैं पुन: उपयोग करने जा रहा हूं, 0025 । इस अलग भाग को समूह कहा जाता है।

अभिव्यक्ति के अंत में gi भाग इंगित करता है कि इसे स्ट्रिंग में सभी उदाहरणों से मेल खाना चाहिए, न केवल पहले, और यह कि मिलान केस असंवेदनशील होना चाहिए। यह उदाहरण दिया गया अनावश्यक लग सकता है, लेकिन यह बहुमुखी प्रतिभा जोड़ता है।

अब, एक स्ट्रिंग से अगले स्ट्रिंग में कनवर्ट करने के लिए, मुझे प्रत्येक मैच के प्रत्येक समूह पर कुछ चरणों को निष्पादित करने की आवश्यकता है, और मैं केवल स्ट्रिंग को बदलकर ऐसा नहीं कर सकता। मददगार रूप से, String.replace ऑपरेशन एक फ़ंक्शन स्वीकार कर सकता है, जिसे प्रत्येक मैच के लिए निष्पादित किया जाएगा। उस फ़ंक्शन की वापसी स्ट्रिंग में मिलान को प्रतिस्थापित कर देगी।

मैं इस पैरामीटर को स्वीकार करने वाले दूसरे पैरामीटर का उपयोग करता हूं, जिसे मैं उपयोग करने के लिए आवश्यक समूह है, और इसे समतुल्य utf-8 अनुक्रम में बदलता हूं, फिर स्ट्रिंग को अपने उचित रूप में डीकोड करने के लिए अंतर्निहित unescape फ़ंक्शन का उपयोग करें।

Question

मुझे यकीन नहीं है कि इसे क्या कहा जाता है इसलिए मुझे इसकी तलाश में परेशानी हो रही है। मैं जावास्क्रिप्ट के साथ http://example.com http\u00253A\u00252F\u00252Fexample.com से यूनिकोड के साथ स्ट्रिंग को कैसे डीकोड कर सकता हूं? मैंने unescape , decodeURI , और decodeURIComponent की कोशिश की तो मुझे लगता है कि बाईं ओर केवल एक चीज स्ट्रिंग है।

संपादित करें: स्ट्रिंग टाइप नहीं की गई है, बल्कि कोड के दूसरे भाग से एक सबस्ट्रिंग है। तो समस्या को हल करने के लिए आपको इस तरह से कुछ शुरू करना होगा:

var s = 'http\\u00253A\\u00252F\\u00252Fexample.com';

मुझे उम्मीद है कि यह दिखाता है कि क्यों unescape () काम नहीं करता है।







Links