猿问

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

考虑以下代码行:

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

编码的行

"There%20should%20be%20text%20after%20this%0022help!"

当通过网站 urldecoder.org 解码时产生

“this22help之后应该有文字!”

然而,调试器中显示的 _decoded 值是: 图 1:问题的调试器视图

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

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


一只斗牛犬
浏览 290回答 1
1回答

人到中年有点甜

\0后面有一个空字节 ( = %00),this因此调试器不会显示字符串的其余部分。所以解码的值是正确的,这只是调试器的限制(或错误?)。你可以看看这里大约从安全角度来看,空字节更多信息。还有这个问题也发布了。
随时随地看视频慕课网APP
我要回答