HttpUtility.UrlEncode - 减去而不是加号?

时间:2011-04-06 11:45:20

标签: c# .net url .net-4.0 urlencode

我正处于一个静止状态,我有一些路径。这条路可能就像“jadajada.com/My Site.html”。

我使用HttpUtility.UrlEncode对网址进行编码,这很棒。但是,我有一个问题,每当我有空格时,它会用“+”符号替换它。我需要一个“ - ”符号。

此方法可以执行此任务吗?如果是这样,那是什么样的编码等。

(是的,我知道你可以使用string.Replace,但现在请避免使用该解决方案; - )

4 个答案:

答案 0 :(得分:4)

"-"替换空格并不是编码,因为没有标准的解码器; "+"是正确的。

但是,如果这仅用于显示,并且只要您的代码不依赖于此值(例如,要执行与 空间 strong>)您可以在编码之前简单地执行.Replace(" ","-")。在有损场景中,您可能还想替换其他几个,截断过长的字符串等。

一旦有-对其进行编码应该是无操作(即它不会改变)。

答案 1 :(得分:1)

空格可以作为+%20进行网址编码。这就是空间编码的方式,因此没有内置的方法将其编码为任何其他任意字符。

如果您想用-代替空格而不是编码,则替换空格,因此Replace方法适合使用。

答案 2 :(得分:1)

UrlEncoding永远不会用 - 自己替换空格,因为它不是URL内部空间的表示。它将使用+或%20。

因此,如果你真的想要这样做,我认为string.Replace是你最好的选择,但如果你不想在结果URL中包含空格,你应该在编码之前从URL中删除空格它首先。

答案 3 :(得分:0)

您希望将其从+更改为 - 的一个原因是,当URL包含+时,URL重写不起作用(除非您完全禁用双重转义)。将+更改为

更容易