JavaScript URL解码功能

at.*_*at. 155 javascript jquery urlencode urldecode

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

ans*_*man 234

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

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

  • +1:这是真正的urldecode,处理空间被编码为+的情况,非常感谢 (34认同)
  • @ChrisMoschini:不,这是正确的,因为替换发生在解码调用之前. (8认同)

Geo*_*off 217

我也使用了encodeURIComponent()decodeURIComponent().

  • 这是一个不完整的答案.请参阅@anshuman下面的urlDecode()实现. (15认同)
  • 不错但它没有删除'+'标志.@ anshuman的回答最适合我 (3认同)
  • 不适用于用++++表示的空格 (2认同)

Eti*_*uis 9

decodeURIComponent(mystring);
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码获取传递的参数:

//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;
}
Run Code Online (Sandbox Code Playgroud)

或者这个单线来获取参数:

location.search.split("your_parameter=")[1]
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用`window.location.search`代替. (2认同)

nit*_*ddy 8

用这个

unescape(str);
Run Code Online (Sandbox Code Playgroud)

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

  • 很酷的答案,但看起来已经 [过时](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions?redirectlocale=en-US&amp;redirectslug=JavaScript%2FGuide%2FFunctions#escape_and_unescape_functions(Obsoleted_above_JavaScript_1 .5)) 支持 `decodeURIComponent()`,因为对非 ASCII 字符的支持很差。 (2认同)