考虑以下代码行:
string _decoded = System.Web.HttpUtility.UrlDecode(
"There%20should%20be%20text%20after%20this%0022help!");
编码行
"There%20should%20be%20text%20after%20this%0022help!"
当通过网站 urldecoder.org 解码时产生
“this22help 后面应该有文字!”
但是调试器中显示的 _decoded 值是: Figure 1: Debugger view of problem
是什么导致了这个问题?是否有一种设置或特殊编码可以在所有情况下避免这种情况?
编辑:是的,我认为这种行为是错误的。我不希望 URLDecode 将\0 字符引入结果字符串,因为它会导致文件名无效(我的代码在文件中移动)。
最佳答案
this
之后有一个空字节 (\0
= %00),因此调试器不会显示字符串的其余部分。
所以解码后的值是正确的,这只是调试器的限制(或错误?)。
可以看看here从安全角度了解有关空字节的更多信息。还有 this question也发布了它。
关于c# - System.Web.HttpUtility.UrlDecode 中是否存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843797/