.NET UrlEncode无法正常工作?

Mar*_*ora 8 c# asp.net

根据http://www.w3schools.com/tags/ref_urlencode.asp 提交请求时,它们是URL编码的,因此例如空间转换为%20.到现在为止还挺好.

我有问题!在表单中提交它会将其转换为%21.但是HttpUtility.UrlEncode(或其WebUtility合作伙伴)或 Uri.EscapeDataString所有人都将返回!这是预期的行为吗?我应该如何编码来自c#的输入,以便将其转换为正确的值?

key*_*rdP 6

感叹号被视为URL安全的ASCII字符,因此不会编码百分比.

来自MSDN

UrlEncode方法对任何不在被视为URL安全的ASCII字符集中的字符进行URL编码.空格被编码为ASCII"+"字符.URL安全的ASCII字符包括ASCI字符(A到Z和a到z),数字(0到9)和一些标点符号.下表列出了被视为URL安全ASCII字符的标点符号.

该表包含 - _ . ! * ( )

更新

根据这个答案,Uri.EscapeDataString应该!编写目标.NET 4.5项目时,但我无法在我当前的机器上测试它.EscapeDataString在以前的.NET框架上,不会对上面的字符进行百分比编码.您可能只需要使用String.Replace并替换转义URI中的上述字符.