2011-04-06 78 views
1

我在一个静静的地方,我有一些路径。此路径可能类似于“jadajada.com/My Site.html”。HttpUtility.UrlEncode - 减号而不是加号?

我使用HttpUtility.UrlEncode来编码url,这很好。但是,我有这样的问题,即每当我有空间时,都会用“+”号代替它。我需要一个“ - ”号。

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

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

+1

为什么要这样做?这就是URL编码的工作原理。 – Steven 2011-04-06 11:47:44

+0

为什么你想要把一个有效并且正确编码的网址转化为一个非标准的东西(尊重所有标准(使用+符号表示空格)? – 2011-04-06 11:48:11

+0

使用“ - ”替代中间空格中的“+”,网址更具可读性。有人认为它也影响SEO(这是没有人确切知道的)。 – 2011-04-06 11:49:32

回答

4

"-"更换空间是不是真的编码,因为对于那些没有标准解码器; "+"是正确的。

但是,如果这是仅用于显示,只要你的代码不依赖于这个值(例如,做一个精确的匹配塞期待空间),你可以简单地做一个.Replace(" ","-")在你编码之前。在这种有损情况下,你可能还需要更换其他几个人,截断过长的字符串等

编码一次它有一个-应该是一个空操作(即它不会改变)。

+0

谢谢! :) 很有用 – 2011-04-06 12:06:49

1

一个空格可以被编码为+%20。这就是空间编码的方式,所以没有内置的方法将其编码为任何其他任意字符。

如果你想用-代替空格而不是编码,它将被替换,所以Replace方法可以适用。

1

UrlEncoding永远不会用自己的空间代替空间,因为这不代表URL中的空间。它将使用+或%20。所以如果你真的想要这样做,我认为string.Replace是你最好的选择,但是如果你不想在结果URL里面有空格,你应该先从URL中去掉空格,然后在第一名。

0

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

相关问题