2010-11-27 10 views
147

Was ist das beste JavaScript-URL-Dekodierprogramm? Encoding wäre auch schön und die Zusammenarbeit mit jQuery ist ein zusätzlicher Bonus.JavaScript URL-Dekodierungsfunktion

+35

Did Sie überprüfen 'encod eURIComponent' und 'decodeURIComponent'? – Gumbo

+0

ist das wirklich das Gleiche? –

+2

@at: Das Gleiche wie was? – Gumbo

Antwort

209

Ich habe auch encodeURIComponent() und decodeURIComponent() verwendet.

+1

Danke Jungs! sieht wie die richtige Antwort aus, aber Gumbo antwortete zuerst. Ich fühle mich, als ob er den Kredit verdient. –

+15

Dies ist eine unvollständige Antwort. Sehen Sie sich die unten gezeigte Implementierung von urlDecode() bei @anshuman an. –

+2

Schön, aber es hat keine '+' Zeichen entfernt. @ anshumans Antwort funktioniert am besten für mich – MusikAnimal

224

ist die komplette Funktion (aus PHPJS):

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

+1: das ist der wahre urldecode, behandelt den Fall von Speicherplatz als + codiert, vielen Dank – SinistraD

+1

Das ist, was ich muss verwendet werden, wenn die Daten mit der Funktion urlencode() von PHP codiert wurden. –

+0

Super nützlich für mich und dauerte eine Nanosekunde zu implementieren. Vielen Dank! –

9
decodeURIComponent(mystring); 

Sie Parameter erhalten können mit diesem Stück Code übergeben:

//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; 
} 

Oder diese Einzeiler Holen Sie sich die Parameter:

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

Sie sollten stattdessen 'window.location.search' verwenden. – 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)); 
+0

Danke, das hat für mich funktioniert. decodeURIComponent hat bei mir nicht funktioniert (Malformed URI-Sequenz). – Smile4ever

5

verwenden

unescape(str); 

ich kein großer JS-Programmierer bin, versucht, alle, und das funktionierte super!

+1

kühle Antwort, aber sieht aus wie es ist [veraltet] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FFunctions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5)) zugunsten von 'decodeURIComponent()' aufgrund der schlechten Unterstützung von nicht-ASCII-Zeichen. –

1

Wenn Sie für die Codierung der Daten in PHP mithilfe von urlencode verantwortlich sind, funktioniert der PHP-Rawurlencode mit der decodeURIComponent von JavaScript, ohne dass das Zeichen + ersetzt werden muss.

1

Hier ist, was ich verwendet:

In JavaScript:

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

var decoded_url = decodeURIComponent(encoded_url); 

In PHP:

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

$decoded_url = url_decode($encoded_url); 

Sie können es auch hier versuchen, online: http://www.mynewsfeed.x10.mx/articles/index.php?id=17