URL编码URL.NET的数组
我有一个包含URL的数组,如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 有没有办法做到这一点 此外,参数值可能不仅有一个空格,还可
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参数并对值进行编码的方法吗?你可以使用正则表达式,但我不愿意推荐它,因为我相信几乎肯定有更好的方法