HttpUtility.UrlEncode - 减号而不是加号

本文关键字:HttpUtility UrlEncode | 更新日期: 2023-09-27 17:48:54

我在一个坐着的地方,我有一些路径。此路径可能类似于"jadajada.com/My 站点.html"。

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

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

(是的,我知道你可以使用字符串。替换,但请暂时避免该解决方案;-)

HttpUtility.UrlEncode - 减号而不是加号

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

但是,如果这仅用于显示,并且只要您的代码不依赖于此值(例如,执行预期的空间的精确 slug 匹配),则只需在编码之前执行.Replace(" ","-")即可。在这种有损方案中,您可能还想替换其他一些字符串,截断过长的字符串等。

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

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

如果要用非编码的-替换空格,则会替换空格,因此Replace方法适合使用。

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

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

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