如何在C#中用%20替换所有空格?

Hai*_*der 67 c# url urlencode

我想使用C#将字符串转换为URL..NET框架中必定有一些应该有用的东西,对吗?

Dir*_*mar 104

另一种方法是使用 Uri.EscapeUriString(stringToEscape).

  • 它也不会逃避`=`,也不会逃避`?`.看来`Uri.EscapeDataString()`是要走的路. (20认同)
  • 不幸的是,这种方法不会逃避`&`字符. (5认同)

Lir*_*una 57

我相信你正在寻找HttpServerUtility.UrlEncode.

System.Web.HttpUtility.UrlEncode(string url)
Run Code Online (Sandbox Code Playgroud)

  • @StoyanDimov:`EscapeUriString()`不会转义`&`nor` =`或`?`,所以`EscapeDataString()`似乎确实是要使用的. (19认同)
  • @palswim是的,但是"接受"的答案不能是你回复的答案:`System.Web.HttpUtility.UrlEncode`将空格编码为`+`而不是'%20`,所以这个完全不正确. (18认同)
  • 错误的答案 - 不要使用`UrlEncode`,因为它用`+`替换空格(而不是OP特别要求的'%20`),这不是标准的URI方案.JavaScript中的`decodeURI`和`decodeURIComponent`将无法正确解码.使用`Uri.EscapeDataString`,可以通过JavaScript正确解码,以便对编码数据和URI进行良好的往返使用 (11认同)
  • 我认为[Uri.EscapeUriString()](https://msdn.microsoft.com/en-us/library/system.uri.escapeuristring%28v=vs.110%29.aspx)是适当的方法,如果我们必须关于它的宗教信仰:) (4认同)
  • 有人编辑了这个问题以完全改变答案.我们[不应该使用编辑来改变特定帖子的含义](http://stackoverflow.com/help/editing). (3认同)

小智 46

我觉得很有用 System.Web.HttpUtility.UrlPathEncode(string str);

它用%20替换空格而不用+替换.

  • 它可以工作但不使用它,因为它适用于浏览器.请改用Uri.EscapeUriString(STRING).MSDN:"请勿使用;仅用于浏览器兼容性.请使用UrlEncode." http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.urlpathencode.aspx (4认同)
  • 我需要将空格编码为%20而不是+,以便成功发布到Twitter.UrlEncode(url)将空格变为+,因此不是我问题的正确答案. (2认同)

pal*_*wim 20

要正确地转义空格以及其他特殊字符,请使用System.Uri.EscapeDataString(string stringToEscape).


Dar*_*elk 14

正如批准的故事所评论的那样,HttpServerUtility.UrlEncode方法用+而不是%20替换空格.请改用以下两种方法之一:Uri.EscapeUriString()Uri.EscapeDataString()

示例代码:

HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"

Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//"https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg"

//When your url has a query string:
Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");

//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
Run Code Online (Sandbox Code Playgroud)