JavaScript URL Decode फ़ंक्शन


157

सबसे अच्छा जावास्क्रिप्ट यूआरएल डिकोड उपयोगिता क्या है? एन्कोडिंग भी अच्छा होगा और jQuery के साथ अच्छी तरह से काम करना एक अतिरिक्त बोनस है।


36
आप जाँच किया था encodeURIComponentऔर decodeURIComponent?
गुमू

क्या वास्तव में वही बात है?
पर।

@ गुंबो: URL एन्कोडिंग और URL डिकोडिंग - blooberry.com/indexdot/html/topics/urlencoding.htm
पर

जवाबों:


219

मैंने encodeURIComponent () और decodeURIComponent () का भी उपयोग किया है।


1
धन्यवाद दोस्तों! सही उत्तर की तरह लग रहा है, लेकिन गुम्बो ने पहले इसका जवाब दिया .. मुझे ऐसा लगता है जैसे वह क्रेडिट का हकदार है
पर।

16
यह एक अधूरा जवाब है। UrlDecode () कार्यान्वयन नीचे @anshuman देखें।
स्टीवन फ्रांसोला

3
अच्छा लगा लेकिन इसने '+' संकेत नहीं निकाले। @ अंशुमन के जवाब ने मेरे लिए सबसे अच्छा काम किया
मुसिकनमल

2
उन रिक्त स्थानों के साथ काम नहीं करता है जिन्हें ++++
mmm

237

यहाँ एक पूरा कार्य है ( PHPJS से लिया गया ):

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}

34
+1: यह सही urldecode है, अंतरिक्ष के मामले को + के रूप में एन्कोड किया गया है, बहुत बहुत धन्यवाद
Máthé Endre-Botond

1
जब PHP के urlencode () फ़ंक्शन के साथ डेटा एन्कोड किया गया था तो मुझे इसका उपयोग करने की आवश्यकता थी।
स्कॉट कीक-वॉरेन

1
अगर मैं गलत नहीं हूं, तो यह डीकोडिंग +% 20 है, न कि अंतरिक्ष के रूप में - यह वास्तव में वह नहीं है जो आप यहां चाहते थे, क्या यह है? आप अंतरिक्ष चाहते हैं, एन्कोडेड चरित्र का दूसरा संस्करण नहीं ... नहीं?
क्रिस मोसचिनी

8
@ क्रिसमोसचिनी: नहीं, यह सही है क्योंकि डिकोड कॉल से पहले प्रतिस्थापित होता है।
lfaraone

1
बहुत बहुत धन्यवाद!! यह jquery में पहले से ही urlencoded किया गया है जो jquery में तार को संभालने के लिए एक सही तरीका है, बस मुझे क्या चाहिए !!
दांते कलारी

9

इसे इस्तेमाल करो

unescape(str);

मैं एक महान जेएस प्रोग्रामर नहीं हूँ, सभी की कोशिश की, और यह बहुत बढ़िया काम किया!


2
जवाब कूल, लेकिन ऐसा लगता है कि है obsoleted के पक्ष में decodeURIComponent()गैर- ASCII वर्ण के गरीब समर्थन की वजह से।
ब्रैड कोच

9
decodeURIComponent(mystring);

आप इस बिट कोड का उपयोग करके पारित पैरामीटर प्राप्त कर सकते हैं:

//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

या पैरामीटर प्राप्त करने के लिए यह एक-लाइनर:

location.search.split("your_parameter=")[1]

2
आपको window.location.searchइसके बजाय उपयोग करना चाहिए ।
aloisdg

3
//How decodeURIComponent Works

function proURIDecoder(val)
{
  val=val.replace(/\+/g, '%20');
  var str=val.split("%");
  var cval=str[0];
  for (var i=1;i<str.length;i++)
  {
    cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
  }

  return cval;
}

document.write(proURIDecoder(window.location.href));

धन्यवाद, यह मेरे लिए काम किया। decodeURIComponent ने मेरे लिए काम नहीं किया (विकृत URI अनुक्रम)।
स्माइल

2

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


0

यहाँ मैं क्या इस्तेमाल किया है:

जावास्क्रिप्ट में:

var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);

var decoded_url = decodeURIComponent(encoded_url);

PHP में:

$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);

$decoded_url = url_decode($encoded_url);

आप इसे यहाँ ऑनलाइन भी आज़मा सकते हैं: http://www.mynewsfeed.x10.mx/articles/index.php?id/17



0

decodeURIComponent()ठीक है, लेकिन आप कभी भी ओटी का उपयोग encodeURIComponent()सीधे नहीं करना चाहते हैं। इस तरह आरक्षित वर्ण से बचें करने में विफल रहता *, !, ', (, और )। की जाँच करें RFC3986 , जहां यह है कि अधिक जानकारी के लिए परिभाषित किया गया है,। मोज़िला डेवलपर नेटवर्क प्रलेखन एक अच्छी व्याख्या और समाधान दोनों देता है। स्पष्टीकरण ...

RFC 3986 (जो आरक्षित है ?,, (,),), और *) का पालन करने में अधिक कठोर होने के लिए, भले ही इन वर्णों में कोई औपचारिक यूआरआई परिसीमन उपयोग न हो, निम्नलिखित सुरक्षित रूप से उपयोग किया जा सकता है:

उपाय...

function fixedEncodeURIComponent(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
    return '%' + c.charCodeAt(0).toString(16);
  });
}

मामले में आप निश्चित नहीं हैं , JSBin.com पर एक अच्छा, काम करने वाला डेमो देखेंसीधे उपयोग encodeURIComponent()करते हुए JSBin.com पर एक खराब, वर्किंग डेमो के साथ इसकी तुलना करें ।

अच्छा कोड परिणाम:

thing%2athing%20thing%21

से खराब कोड परिणाम encodeURIComponent():

thing*thing%20thing!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.