C# HttpUtility.UrlEncode-减号而不是加号?

C# HttpUtility.UrlEncode-减号而不是加号?,c#,.net,url,.net-4.0,urlencode,C#,.net,Url,.net 4.0,Urlencode,我现在的处境是我有路可走。此路径可能类似于“jadajada.com/My Site.html” 我使用HttpUtility.UrlEncode对URL进行编码,这很好。然而,我有一个问题,每当我有一个空格,它就会用一个“+”符号来代替它。我需要一个“-”号 此方法能否执行此任务?如果是的话,什么样的编码等等 (是的,我知道你可以使用string.Replace,但现在请避免使用这种解决方案;-)用“-”替换空格实际上不是编码,因为没有标准的解码器;“+”是正确的 但是,如果这仅用于显示,并且

我现在的处境是我有路可走。此路径可能类似于“jadajada.com/My Site.html”

我使用HttpUtility.UrlEncode对URL进行编码,这很好。然而,我有一个问题,每当我有一个空格,它就会用一个“+”符号来代替它。我需要一个“-”号

此方法能否执行此任务?如果是的话,什么样的编码等等


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

“-”
替换空格实际上不是编码,因为没有标准的解码器;
“+”
是正确的

但是,如果这仅用于显示,并且只要代码不依赖于此值(例如,要进行精确的段塞匹配,需要空格),则只需在编码之前执行
。替换(“,”-”
)。在这种有损的情况下,您可能还需要替换其他一些字符串,截断过长的字符串,等等


一旦它有一个
-
编码就应该是不可操作的(即它不会改变)。

“-”
替换空格实际上不是编码,因为没有标准的解码器;
“+”
是正确的

但是,如果这仅用于显示,并且只要代码不依赖于此值(例如,要进行精确的段塞匹配,需要空格),则只需在编码之前执行
。替换(“,”-”
)。在这种有损的情况下,您可能还需要替换其他一些字符串,截断过长的字符串,等等


一旦空间有了
-
编码,就应该是不可操作的(即它不会改变)。

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


如果您想用
-
替换空间,而不是用未编码的空间,那么它将被替换,因此
替换
方法将适合使用。

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


如果您想用
-
替换空间,而不是编码,那么它正在替换,因此
replace
方法将适合使用。

UrlEncoding将永远不会将空间本身替换为-,因为这不是URL中空间的表示形式。它将使用+或%20


因此,如果您真的想这样做,我认为
string.Replace
是您最好的选择,但是如果您不想在生成的URL中使用空格,那么您可能应该在对URL进行编码之前从URL中删除空格。

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


如果你真的想这么做,我认为
string.Replace
是你最好的选择,但是如果你不想在结果URL中留下空格,在对URL进行编码之前,您可能应该先从URL中删除空格。

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

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

更容易,为什么要这样做?这就是URL编码的工作原理。为什么要将符合所有标准的有效且正确编码的URL(使用+符号表示空格)转换为非标准的URL?URL在空格之间使用“-”而不是“+”更易于阅读。有些人认为它也会影响SEO(这是没有人确切知道的事情)。你可能想在url编码之前/而不是之前使用slugify,如果可读性和SEO是你关心的问题,你为什么要这样做?这就是URL编码的工作原理。为什么要将符合所有标准的有效且正确编码的URL(使用+符号表示空格)转换为非标准的URL?URL在空格之间使用“-”而不是“+”更易于阅读。一些人认为它也会影响SEO(这是没有人确切知道的事情)。如果可读性和SEO是你关心的问题,你可能想在url编码之前/而不是之前使用slugify