HttpUtility.UrlEncode - 减号而不是加号
本文关键字:HttpUtility UrlEncode | 更新日期: 2023-09-27 17:48:54
我在一个坐着的地方,我有一些路径。此路径可能类似于"jadajada.com/My 站点.html"。
我使用HttpUtility.UrlEncode对url进行编码,这很棒。但是,我有一个问题,每当我有一个空格时,它都会用"+"号替换它。我需要一个"-"符号。
此方法可以执行此任务吗?如果是这样,什么样的编码等。
(是的,我知道你可以使用字符串。替换,但请暂时避免该解决方案;-)
用"-"
替换空格并不是真正的编码,因为没有标准的解码器;"+"
是正确的。
但是,如果这仅用于显示,并且只要您的代码不依赖于此值(例如,执行预期的空间的精确 slug 匹配),则只需在编码之前执行.Replace(" ","-")
即可。在这种有损方案中,您可能还想替换其他一些字符串,截断过长的字符串等。
一旦它有-
就对其进行编码应该是无操作的(即它不会改变)。
可以将空格 URL 编码为 +
或 %20
。这就是空间的编码方式,因此没有内置方法将其编码为任何其他任意字符。
如果要用非编码的-
替换空格,则会替换空格,因此Replace
方法适合使用。
UrlEncoding 永远不会用 - 替换空格,因为它不是 URL 内空格的表示形式。它将使用 + 或 %20。
因此,如果您真的想这样做,我认为string.Replace
是您最好的选择,但是如果您不希望生成的 URL 中有空格,您可能应该在首先对其进行编码之前从 URL 中删除空格。
您希望将其从 + 更改为 - 的一个原因是,当 URL 包含 + 时,URL 重写不起作用(除非您完全禁用双重转义)。 将 + 更改为 - 更容易 -