जावास्क्रिप्ट में सभी विशेष वर्ण एन्कोडिंग
मुझे अपने द्वारा प्राप्त स्ट्रिंग को एनकोड करना होगा और इसे एक URL पैरामीटर के रूप में पास करना होगा ताकि मुझे विश्वास न हो कि मैं या तो पास कर सकता हूं / या एक पैरेन्थेसिस (इसलिए विचार करते हुए कि मेरे पास निम्नलिखित स्ट्रिंग है
KEY WEST / Florida(FL)
मैं निम्नलिखित कोशिश कर रहा हूँ
encodeURIComponent("KEY WEST / Florida(FL)")
"KEY%20WEST%20%2F%20Florida(FL)"
escape("KEY WEST / Florida(FL)")
"KEY%20WEST%20/%20Florida%28FL%29"
उनमें से कोई भी स्ट्रिंग को एन्कोडिंग नहीं कर रहा है जिसे मैं बाद में अपने कोड में डिकोड कर सकता हूं क्योंकि पहला एक रख रहा है () और दूसरा एक / रख रहा है /
मैं इसे एक शॉट में कैसे करूं और बाद में जरूरत पड़ने पर इसे डिकोड करूं?
इसके अलावा ऐसा लगता है कि भागने () को हटा दिया गया है ताकि एन्कोडिंग करने का कौन सा तरीका पसंद किया जाए?
जवाब
URL एन्कोडिंग के लिए, encodeURIऔर encodeURIComponentफ़ंक्शंस का उपयोग किया जाना चाहिए।
encodeURIकेवल विशेष वर्णों को एन्कोड करता है, जबकि उन वर्णों को encodeURIComponentभी एनकोड करता है जिनका URL में अर्थ होता है, इसलिए इसका उपयोग क्वेरी स्ट्रिंग्स को एन्कोड करने के लिए किया जाता है, उदाहरण के लिए।
कोष्ठक हैं (जैसा कि यहां बताया गया है ), हालांकि, URL में कहीं भी उन्हें एन्कोडिंग के बिना अनुमति दी गई है, इसीलिए encodeURIComponentउन्हें छोड़ दिया जाता है।
escapeसमारोह माना जा सकता है पदावनत , और हालांकि यह आधिकारिक तौर पर नहीं है, यह बचा जाना चाहिए।
तो एन्कोडिंग को किस तरीके से पसंद किया जाता है?
- संपूर्ण URL के लिए, encodeURI
- URL भागों के लिए, जैसे खंड के क्वेरी स्ट्रिंग, encodeURIComponent
यह भी देखें कि आप encodeURI/ के बजाय भागने का उपयोग कब करने वाले हैं encodeURIComponent?