什么是最好的JavaScript URL解码实用工具?编码也很好并且能够与jQuery良好配合使用将是额外的优点。
什么是最好的JavaScript URL解码实用工具?编码也很好并且能够与jQuery良好配合使用将是额外的优点。
这里有一个完整的函数(从PHPJS获取):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
我也使用过 encodeURIComponent() 和 decodeURIComponent()。
unescape(str);
我不是一个很出色的JS程序员,尝试了所有方法,但这个方法非常好用!
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
。 - aloisdg//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));
如果您负责使用urlencode在PHP中对数据进行编码,那么PHP的rawurlencode可以与JavaScript的decodeURIComponent配合使用,而不需要替换+字符。
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
这是我使用的代码:
在JavaScript中:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
在 PHP 中:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
您也可以在这里在线尝试:http://www.mynewsfeed.x10.mx/articles/index.php?id=17
decodeURIComponent()
是没问题的,但你永远不想直接使用 encodeURIComponent()
。这样做无法转义保留字符,如 *
、!
、'
、(
和 )
。请查看 RFC3986 了解更多信息。 Mozilla 开发者网络文档提供了很好的解释和解决方案。解释...
为了更严格地遵守 RFC 3986(该规范保留 !、'、(、) 和 *,即使这些字符没有正式的 URI 分隔符用途),可以安全地使用以下内容:
解决方案...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
如果您不确定,请查看JSBin.com上的良好工作演示。将其与使用encodeURIComponent()
直接在JSBin.com上进行的错误工作演示进行比较。
良好代码结果:
thing%2athing%20thing%21
encodeURIComponent()
产生的错误代码结果:
thing*thing%20thing!
encodeURIComponent
和decodeURIComponent
吗? - Gumbo