JavaScript URL 解码功能

IT技术 javascript jquery urlencode urldecode
2021-01-19 19:30:10

什么是最好的 JavaScript URL 解码实用程序?编码也会很好,与 jQuery 一起工作是一个额外的好处。

6个回答

这是一个完整的函数(取自PHPJS):

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
这是我在使用 PHP 的 urlencode() 函数编码数据时需要使用的。
2021-03-12 19:30:10
如果我没记错的话,这是将 + 解码为 %20,而不是空格 - 这不是您真正想要的,是吗?你想要的是空格,而不是编码字符的另一个版本......不是吗?
2021-03-13 19:30:10
@ChrisMoschini:不,这是正确的,因为替换发生在解码调用之前。
2021-03-18 19:30:10
+1:这是真正的urldecode,处理空间被编码为+的情况,非常感谢
2021-03-23 19:30:10
太感谢了!!这是在 jquery 中处理字符串的完美方法,这些字符串之前已经用 php 进行了 urlencoded,正是我所需要的!!
2021-04-10 19:30:10
这是一个不完整的答案。请参阅下面@anshuman 的 urlDecode() 实现。
2021-03-15 19:30:10
不错,但它没有删除“+”号。@anshuman 的回答最适合我
2021-03-19 19:30:10
不适用于用 ++++ 表示的空格
2021-03-24 19:30:10
多谢你们!看起来是正确的答案,但 Gumbo 首先回答了这个……我觉得他值得称赞
2021-03-30 19:30:10

用这个

unescape(str);

我不是一个出色的 JS 程序员,我尝试了所有方法,效果非常好!

很酷的答案,但由于对非 ASCII 字符的支持不佳,它看起来已经过时decodeURIComponent()
2021-04-04 19:30:10
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]
你应该window.location.search改用。
2021-04-05 19:30:10
//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 序列格式错误)。
2021-03-20 19:30:10