JavaScript URL解码功能

时间:2010-11-27 17:27:47

标签: javascript jquery urlencode urldecode

什么是最好的JavaScript URL解码工具?编码也会很好,并且与jQuery一起使用是一个额外的好处。

8 个答案:

答案 0 :(得分:231)

这是一个完整的功能(取自PHPJS):

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

答案 1 :(得分:215)

答案 2 :(得分: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]

答案 3 :(得分:7)

使用此

unescape(str);

我不是一个优秀的JS程序员,尝试了所有,这非常棒!

答案 4 :(得分: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));

答案 5 :(得分:2)

如果您负责使用urlencode在PHP中编码数据,PHP的rawurlencode可以与JavaScript的decodeURIComponent一起使用,而无需替换+字符。

答案 6 :(得分:0)

var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));

答案 7 :(得分:0)

decodeURIComponent()很好,但是您永远不想直接使用encodeURIComponent()。这无法转义保留字符,例如*!'()。请查看RFC3986(在此定义)中的更多信息。 Mozilla开发人员网络文档提供了很好的解释和解决方案。说明...

为了严格遵守RFC 3986(保留!,',(,)和*),即使这些字符没有正式的URI分隔用法,也可以安全地使用以下字符:

解决方案...

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

如果不确定,请签出good, working demo at JSBin.com。将其与bad, working demo at JSBin.com using encodeURIComponent() directly进行比较。

好的代码结果:

thing%2athing%20thing%21

来自encodeURIComponent()的错误代码:

thing*thing%20thing!