Lev*_*lho 8 c# uri escaping linqpad .net-4.5
一个奇怪的问题,但让我们看看它得到了什么样的反应......
如果我编写控制台应用程序(VS 2013,.NET 4.5.1)并执行以下代码行:
Uri.EscapeUriString("[")
我明白了:
[
但是如果我Uri.EscapeUriString("[").Dump()在我的机器上的LINQPad中执行相同的操作(好吧,技术上),我会得到:
%5B
为了使事情进一步复杂化,根据这篇文章 Uri.EscapeUriString("[")确实应该返回%5B.该帖子写于2012年6月27日.
我想也许LINQPad引用的是比VS使用的更旧的DLL,但这意味着EscapeUriString最近已经发生了变化,我无法找到任何记录.有没有人对可能导致这种行为的原因有任何想法?
这在.Net 4和.Net 4.5之间发生了变化,您可以通过将框架版本重新定位到.Net 4并运行测试程序来验证.
.Net 4 - >输出"%5B".net 4.5(或更高版本) - >输出"["
这里提到了:.NET Framework 4.5中的应用程序兼容性
在Uri.EscapeDataString,Uri.EscapeUriString和Uri.UnescapeDataString的部分下,声明(使用.Net 4.5):
保留字符和未保留字符列表现在支持RFC 3986.
具体变化:
Run Code Online (Sandbox Code Playgroud)Unreserved escaped characters are un-escaped. EscapeDataString escapes reserved characters based on RFC 3986. EscapeUriString does not escape reserved characters. UnescapeDataString does not throw an exception if it encounters an invalid escape sequence.
特别是,EscapeUriString不会转义重要的保留字符.
| 归档时间: |
|
| 查看次数: |
2152 次 |
| 最近记录: |