JavaScript URL解码函数
最好的JavaScript URL解码实用程序是什么?编码也很好,与jQuery配合良好是一个额外的好处。我也使用过。这里是一个完整的函数(取自): 您可以使用以下代码位获取传递的参数:JavaScript URL解码函数,javascript,jquery,urlencode,urldecode,Javascript,Jquery,Urlencode,Urldecode,最好的JavaScript URL解码实用程序是什么?编码也很好,与jQuery配合良好是一个额外的好处。我也使用过。这里是一个完整的函数(取自): 您可以使用以下代码位获取传递的参数: //parse URL to get values: var i = getUrlVars()["i"]; function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.lo
//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;
}
//解码组件的工作原理
函数proURIDecoder(val)
{
val=val.replace(/\+/g,'%20');
var str=val.split(“%”);
var-cval=str[0];
对于(var i=1;i使用此
unescape(str);
我不是一个优秀的JS程序员,我尝试了所有的方法,这非常棒!如果您负责使用urlencode在PHP中编码数据,PHP的rawurlencode可以与JavaScript的decodeURIComponent一起工作,而无需替换+字符。以下是我使用的:
在JavaScript中:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
在PHP中:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
您也可以在此处在线试用:
var uri=“my test.asp?name=ståle&car=saab”;
console.log(encodeURI(uri));
decodeURIComponent()
很好,但您永远不希望直接使用encodeURIComponent()
。这无法转义保留字符,如*
,!
,,,(
,和)
。有关这一点的更多信息,请查看此处的定义。Mozilla开发者网络文档提供了很好的解释和解决方案。解释
为了更严格地遵守RFC 3986(保留!、'、(、)和*),即使这些字符没有正式的URI定界用途,也可以安全地使用以下字符:
解决方案
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
如果您不确定,请查看a。将此与a进行比较
良好的代码结果:
thing%2 thing%20 thing%21
encodeURIComponent()
导致错误代码:
thing*thing%20 thing!
你检查了encodeURIComponent
和decodeURIComponent
了吗?那真的是一样的吗?@Gumbo:和URL编码和URL解码一样-谢谢大家!看起来是正确的答案,但Gumbo首先回答了这个问题。.我觉得他应该得到信任这是一个不完整的答案。请参阅urlDecode()下面的实现是@anshuman.Nice,但它没有删除“+”符号。@anshuman的答案对meDoesn最有效。它不适用于用+1表示的空间:这是真正的urldecode,处理空间编码为+”的情况,非常感谢。这是我在用PHP的urlencode()编码数据时需要使用的函数。如果我没有弄错的话,这是解码+作为%20,而不是作为空格-这不是您真正想要的,是吗?您想要的是空格,而不是另一个编码字符版本…不是吗?@ChrisMoschini:不,这是正确的,因为替换发生在解码调用之前。非常感谢!!这是处理jquery w中字符串的完美方法它以前是用php进行URL编码的,这正是我所需要的!!回答很酷,但由于对非ASCII字符的支持较差,它似乎更支持decodeURIComponent()
。谢谢,这对我有效。decodeURIComponent对我无效(格式错误的URI序列)。你应该改用window.location.search
。
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}