【发布时间】:2016-11-23 16:17:54
【问题描述】:
我注意到,如果您在 URI 后面是带有百分比编码空格 (%20) 的 URL 时调用 Uri.ToString(),那么您将得到格式错误的 URL:
// result: "http://example.com/test segment"
new Uri("http://example.com/test%20segment").ToString();
由于URL is URI(相反的说法不正确)和带有非编码空格的 URL is not valid,使用 Uri 作为 URL 的容器似乎是不安全的。
这是正确的行为吗?
【问题讨论】:
-
推测
ToString()正在按照父编码规范解析%20,并确定它应该是一个空格。 -
MSDN 表示它应该返回带有常规空格的字符串。如果您想要
%20而不是空格,请使用 .OriginalString。 -
你指出的文档说
.ToString()返回空格,而.OriginalString返回%20。