Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript URL解码函数_Javascript_Jquery_Urlencode_Urldecode - Fatal编程技术网

JavaScript URL解码函数

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

最好的JavaScript URL解码实用程序是什么?编码也很好,与jQuery配合良好是一个额外的好处。

我也使用过。

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

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

//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);
  });
}