Qual è la migliore utility di decodifica dell'URL JavaScript? Anche la codifica sarebbe piacevole e lavorare bene con jQuery è un ulteriore vantaggio.
Qual è la migliore utility di decodifica dell'URL JavaScript? Anche la codifica sarebbe piacevole e lavorare bene con jQuery è un ulteriore vantaggio.
Risposte:
Ho usato anche encodeURIComponent () e decodeURIComponent () .
Ecco una funzione completa (presa da PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Usa questo
unescape(str);
Non sono un grande programmatore di JS, ho provato tutto e ha funzionato alla grande!
decodeURIComponent()
causa del supporto scarso dei caratteri non ASCII.
decodeURIComponent(mystring);
puoi ottenere i parametri passati usando questo bit di codice:
//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;
}
O questo one-liner per ottenere i parametri:
location.search.split("your_parameter=")[1]
window.location.search
invece.
//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));
Se sei responsabile della codifica dei dati in PHP utilizzando urlencode, il rawurlencode di PHP funziona con il componente decodificaURIC di JavaScript senza dover sostituire il carattere +.
Ecco cosa ho usato:
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);
Puoi anche provarlo online qui: http://www.mynewsfeed.x10.mx/articles/index.php?id=17
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
va bene, ma non vuoi mai usarlo encodeURIComponent()
direttamente. Questo non riesce a sfuggire caratteri riservati come *
, !
, '
, (
, e )
. Dai un'occhiata a RFC3986 , dove è definito, per maggiori informazioni a riguardo. La documentazione di Mozilla Developer Network fornisce sia una buona spiegazione che una soluzione. Spiegazione...
Per essere più rigorosi nell'aderire a RFC 3986 (che riserva!, ', (,) E *), anche se questi caratteri non hanno usi di delimitazione URI formalizzati, è possibile utilizzare in sicurezza:
Soluzione...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
Se non sei sicuro, dai un'occhiata a una buona demo funzionante su JSBin.com . Confronta questo con una demo funzionante su JSBin.com usando encodeURIComponent()
direttamente .
Buoni risultati del codice:
thing%2athing%20thing%21
Risultati con codici errati da encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
edecodeURIComponent
?