首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于查询字符串的ASP.Net URLEncode与符号

用于查询字符串的ASP.Net URLEncode与符号
EN

Stack Overflow用户
提问于 2009-02-18 17:03:01
回答 6查看 78.8K关注 0票数 23

我需要重定向到一个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 &,直到可以重写相关代码。你不就是讨厌旧代码吗!

EN

回答 6

Stack Overflow用户

发布于 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
票数 18
EN

Stack Overflow用户

发布于 2018-11-29 16:10:29

在.net核心版本2.1 ( 2018年末)中,我能够使用以下内容:

System.Web.HttpUtility.UrlEncode(string_to_encode)
票数 3
EN

Stack Overflow用户

发布于 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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/561954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档