请考虑以下代码行:
string _decoded = System.Web.HttpUtility.UrlDecode(
"There%20should%20be%20text%20after%20this%0022help!");
编码行
"There%20should%20be%20text%20after%20this%0022help!"
通过urldecoder.org网站进行解码时产生
“此22帮助后面应该有文字!”
但是,调试器中显示的_decoded值为: Figure 1: Debugger view of problem
什么可能导致此问题?是否有设置或特殊编码可以在所有情况下规避?
编辑:是的,我认为此行为是错误。我不希望URLDecode将\ 0字符引入结果字符串,因为这将导致无效的文件名(我的代码在文件中移动)。
答案 0 :(得分:5)
\0
之后有一个空字节(this
=%00),因此调试器不会显示字符串的其余部分。
所以解码后的值是正确的,这仅仅是调试器的限制(或错误?)。
从安全的角度来看,您可以查看here以获得有关空字节的更多信息。与此同时,也发布了this question。