Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
URL编码URL.NET的数组_.net_Url_Urlencode - Fatal编程技术网

URL编码URL.NET的数组

URL编码URL.NET的数组,.net,url,urlencode,.net,Url,Urlencode,我有一个包含URL的数组,如http://www.example.com?a=1 1&b=2&c=3 3我需要对每个URL进行URL编码 但是如果我使用HttpServerUtility.URLEncode(url)它将输出http%3a%2f%2fwww.example.com%3fa%3d1+1%26b%3d2+2%26c%3d3+3,但我需要它看起来像http://www.example.com?a=1+1&b=2+2&c=3+3 有没有办法做到这一点 此外,参数值可能不仅有一个空格,还可

我有一个包含URL的数组,如
http://www.example.com?a=1 1&b=2&c=3 3
我需要对每个URL进行URL编码

但是如果我使用
HttpServerUtility.URLEncode(url)
它将输出
http%3a%2f%2fwww.example.com%3fa%3d1+1%26b%3d2+2%26c%3d3+3
,但我需要它看起来像
http://www.example.com?a=1+1&b=2+2&c=3+3

有没有办法做到这一点

此外,参数值可能不仅有一个空格,还可能有一个&符号。

您可以这样做:

string oldUrl = "http://www.example.com?a=1 1&b=2 2&c=3 3"
string oldUrlSplit = oldUrl.Split('?');
string newUrl = oldUrlSplit[0] + HttpUtility.URLEncode(oldUrlSplit[1]);
显然,您需要空检查,等等

编辑:

这一次我有点缺球。您还需要在
&
上拆分旧URL拆分[1],然后在
=
上拆分旧URL拆分[1],之后只对后一部分进行URL编码(在
=
之后)。感谢@Anthony Pegram指出这一点。

您可以做到:

string oldUrl = "http://www.example.com?a=1 1&b=2 2&c=3 3"
string oldUrlSplit = oldUrl.Split('?');
string newUrl = oldUrlSplit[0] + HttpUtility.URLEncode(oldUrlSplit[1]);
显然,您需要空检查,等等

编辑:


这一次我有点缺球。您还需要在
&
上拆分旧URL拆分[1],然后在
=
上拆分旧URL拆分[1],之后只对后一部分进行URL编码(在
=
之后)。感谢@Anthony Pegram指出这一点。

不会有现成的方法来做你想做的事情。从编程的角度来看,QueryString中的&不是它能够设置的东西

此外,URL编码URL将其设置为通过URL发送,这就是它将替换/和其他字符的原因


当然,您可以对查询字符串进行URL编码,但这很可能会导致意外的结果。

没有现成的方法来完成您想做的事情。从编程的角度来看,QueryString中的&不是它能够设置的东西

此外,URL编码URL将其设置为通过URL发送,这就是它将替换/和其他字符的原因


当然,您可以对查询字符串进行URL编码,但这很可能会导致意外结果。

您需要对单个元素进行编码,而不是对整个字符串进行编码,以便最终得到的URL为

您可以看到其中的空格是如何转换为%20的,但实际上只有实际变量“1 1”“2”“3 3”被输入到
HttpServerUtility.URLEncode()


正如Mitchel所说,这不是一个现成的解决方案,但是为了提取这些变量进行URL编码,您可以进行一些修改。

您需要对单个元素进行编码,而不是整个字符串,以便最终得到的URL是

您可以看到其中的空格是如何转换为%20的,但实际上只有实际变量“1 1”“2”“3 3”被输入到
HttpServerUtility.URLEncode()


就像Mitchel说的,这不是一个现成的解决方案,但是为了提取这些变量进行UrlEncoding,你可以做一些修改。

谢谢大家的回答,你帮我想出了一个我可以使用的解决方案

        Dim sURL As String = "http://www.example.com?a=1 1&b=2 2&c=3 3"
    Dim sURLParameters = sURL.Split("?")
    Dim parameters As NameValueCollection

    parameters = HttpUtility.ParseQueryString(sURLParameters(1))

    sURL = sURLParameters(0) & "?"
    For i As Integer = 0 To parameters.Count - 1
        sURL += parameters.Keys(i).ToString & "=" & Server.UrlEncode(parameters.Item(i).ToString)
    Next

    Response.Write(sURL)
这个链接引导我进入ParseQueryString解决方案


谢谢大家的回复,你帮我想出了一个我可以使用的解决方案

        Dim sURL As String = "http://www.example.com?a=1 1&b=2 2&c=3 3"
    Dim sURLParameters = sURL.Split("?")
    Dim parameters As NameValueCollection

    parameters = HttpUtility.ParseQueryString(sURLParameters(1))

    sURL = sURLParameters(0) & "?"
    For i As Integer = 0 To parameters.Count - 1
        sURL += parameters.Keys(i).ToString & "=" & Server.UrlEncode(parameters.Item(i).ToString)
    Next

    Response.Write(sURL)
这个链接引导我进入ParseQueryString解决方案


你是在尝试编码半个字符串吗?UrlEncode方法的输出有什么问题?你是在尝试编码半个字符串吗?UrlEncode方法的输出有什么问题?@Slaks:一点也没有:-)我必须回到石器时代,那时只有一个字符数组可以传递到
Split
。相应地更新。谢谢,这是不完整的<代码>=也将被编码,这将中断查询字符串。进一步说,随后在
=
上拆分也可能无效,因为它很可能是值的一部分。@Anthony Pegram:相应地更新了。谢谢你指出我的缺点。@Slaks:什么都没有:-)我必须回到石器时代,那时只有一个字符数组可以传递到
Split
。相应地更新。谢谢,这是不完整的<代码>=也将被编码,这将中断查询字符串。进一步说,随后在
=
上拆分也可能无效,因为它很可能是值的一部分。@Anthony Pegram:相应地更新了。谢谢你指出我的缺点。你知道我可以解析每个URL参数并对值进行编码的方法吗?你可以使用正则表达式,但我不愿意推荐,因为我相信几乎肯定有更好的方法。你知道我可以解析每个URL参数并对值进行编码的方法吗?你可以使用正则表达式,但我不愿意推荐它,因为我相信几乎肯定有更好的方法