Joh*_*ika 9 .net c# uri urlencode
在.Net 4.5之前,似乎System.Uri会对编码的斜杠进行编码,但此后已经修复.参考:https://stackoverflow.com/a/20733619/188740
我遇到了与冒号相同的问题.System.Uri仍然编码冒号.例:
var uri = new Uri("http://www.example.com/?foo=http%3A%2F%2Fwww.example.com");
var s = uri.ToString(); //http://www.example.com/?foo=http:%2F%2Fwww.example.com
Run Code Online (Sandbox Code Playgroud)
请注意System.Uri 如何%3A
切换回:
.这是一个错误吗?什么是最好的解决方法?
怎么用Uri.AbsoluteUri
呢?
var s = uri.AbsoluteUri;
// http://www.example.com/?foo=http%3A%2F%2Fwww.example.com
Run Code Online (Sandbox Code Playgroud)
根据来源,uri.ToString()
看起来它具有可以在这里看到的某些部分的逻辑,而.AbsoluteUri
具有更简单的实现.
Uri.ToString()
根据MSDN文档System.Uri.ToString()
:
包含Uri实例的未转义规范表示的String实例.除#,?和%外,所有字符均未转义.
然而,根据示例并在尝试了更多字符串之后,看起来实际的实现看起来像'Only :
,*
and spaces
unescaped'
%3A (:) // gets unescaped
%20 ( ) // gets unescaped
%2A (*) // gets unescaped
%2b, %26, %23, %24, %25 (+, &, #, $, %) // Remain as-is (escaped)
Run Code Online (Sandbox Code Playgroud)
其他链接