Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Web.HttpUtility.UrlDecode中是否存在错误?_C#_Urldecode_System.web - Fatal编程技术网

C# System.Web.HttpUtility.UrlDecode中是否存在错误?

C# System.Web.HttpUtility.UrlDecode中是否存在错误?,c#,urldecode,system.web,C#,Urldecode,System.web,考虑以下代码行: string _decoded = System.Web.HttpUtility.UrlDecode( "There%20should%20be%20text%20after%20this%0022help!"); 编码线 "There%20should%20be%20text%20after%20this%0022help!" 当通过网站urldecover.org解码时产生 “此帮助后面应该有文本!” 但是,调试器中显示的_解码值为: 是什么导致了这个问题?是否

考虑以下代码行:

string _decoded = System.Web.HttpUtility.UrlDecode(
  "There%20should%20be%20text%20after%20this%0022help!");
编码线

"There%20should%20be%20text%20after%20this%0022help!" 
当通过网站urldecover.org解码时产生

“此帮助后面应该有文本!”

但是,调试器中显示的_解码值为:

是什么导致了这个问题?是否有一种设置或特殊编码可以在所有情况下避免这种情况

<>编辑:是的,我认为这个行为是个错误。我不希望URLDecode在结果字符串中引入\0字符,因为这将导致无效的文件名(我的代码正在文件中移动)。

后有一个空字节(
\0
=&percnt;00),因此调试器不会显示字符串的其余部分

所以解码的值是正确的,这只是调试器的限制(或bug?)


您可以从安全角度查看有关空字节的更多信息。也有关于它的帖子。

%00
可能应该是
%20
是的%00应该是%20,但是我无法控制用户对文件名的调用。但是
\u decoded
确实是
“这个“+”\0“+“22帮助!”
后面应该有文本,正如预期的那样,因此,错误不在
UrlDecode
方法中。请注意,包含
\0
的字符串在调试窗口“监视”、“局部变量”、“即时变量”等中看起来不错。但当您单击小放大镜图标并进入“文本可视化工具”时,问题出现了,如akser的图所示。