我需要重定向到一个url,该url将参数作为查询字符串进行传递。
这可以在值中包含一个“与”号。比如
string value = "This & That";
Response.Redirect("http://www.example.com/?Value=" + Server.UrlEncode(value));
但是,这将返回http://www.example.com/?Value=This+&+That
我应该使用什么来编码这个字符串?
编辑:感谢Luke指出显而易见的事实,代码确实工作正常。我很抱歉,我的问题毕竟不是一个有效的问题!
我将要使用的页面有很多旧的遗留代码,这些代码显然在自己进行某种编码和解码,使它看起来就像我的urlencode不工作一样。
不幸的是,我的解决方案是完全放弃使用an &,直到可以重写相关代码。你不就是讨厌旧代码吗!
发布于 2009-02-18 17:05:32
从技术上讲:
value = value.Replace("&", "%26")
就能达到目的。
编辑:整个UrlEncode/HttpEncode方法似乎有一些棘手的问题,这些问题并不能很好地解决这个问题。前段时间我写了一个简单的方法,可能会派上用场。这应该涵盖了所有主要的编码问题,并且很容易编写一个“反序列化程序”。
Protected Function SanitizeURLString(ByVal RawURLParameter As String) As String
Dim Results As String
Results = RawURLParameter
Results = Results.Replace("%", "%25")
Results = Results.Replace("<", "%3C")
Results = Results.Replace(">", "%3E")
Results = Results.Replace("#", "%23")
Results = Results.Replace("{", "%7B")
Results = Results.Replace("}", "%7D")
Results = Results.Replace("|", "%7C")
Results = Results.Replace("\", "%5C")
Results = Results.Replace("^", "%5E")
Results = Results.Replace("~", "%7E")
Results = Results.Replace("[", "%5B")
Results = Results.Replace("]", "%5D")
Results = Results.Replace("`", "%60")
Results = Results.Replace(";", "%3B")
Results = Results.Replace("/", "%2F")
Results = Results.Replace("?", "%3F")
Results = Results.Replace(":", "%3A")
Results = Results.Replace("@", "%40")
Results = Results.Replace("=", "%3D")
Results = Results.Replace("&", "%26")
Results = Results.Replace("$", "%24")
Return Results
End Function
发布于 2018-11-29 16:10:29
在.net核心版本2.1 ( 2018年末)中,我能够使用以下内容:
System.Web.HttpUtility.UrlEncode(string_to_encode)
发布于 2010-09-23 00:18:08
另一个需要转义的字符是撇号。将其替换为%27。
string url = Server.UrlEncode(value).Replace("'", "%27);
为了与其他.Net框架向后兼容,HttpUtility.UrlEncode()和Server.UrlEncode()不会替换这个字符和其他一些字符。有关详细信息,请参阅microsoft文章:http://connect.microsoft.com/VisualStudio/feedback/details/214349/httputility-urlencode-does-not-encode-apostrophe
https://stackoverflow.com/questions/561954
复制相似问题