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的图所示。