System.Web.HttpUtility.UrlDecode 中有错误吗?
Is there a bug in 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 生成
"There should be text after this22help!"
但是调试器中显示的 _decoded 值是:
Figure 1: Debugger view of problem
是什么导致了这个问题?是否有设置或特殊编码可以在所有情况下避免这种情况?
编辑:是的,我认为这种行为是错误的。我不希望 URLDecode 将 \0 字符引入结果字符串,因为它会导致文件名无效(我的代码在文件中移动)。
this
后有一个空字节 ([=10=]
= %00),因此调试器不会显示字符串的其余部分。
所以解码后的值是正确的,这只是调试器的限制(或错误?)。
您也可以看看 here for more info about null byte from security perspective. And there is this question 发布的相关信息。
考虑以下代码行:
string _decoded = System.Web.HttpUtility.UrlDecode(
"There%20should%20be%20text%20after%20this%0022help!");
编码行
"There%20should%20be%20text%20after%20this%0022help!"
通过网站解码时 urldecoder.org 生成
"There should be text after this22help!"
但是调试器中显示的 _decoded 值是: Figure 1: Debugger view of problem
是什么导致了这个问题?是否有设置或特殊编码可以在所有情况下避免这种情况?
编辑:是的,我认为这种行为是错误的。我不希望 URLDecode 将 \0 字符引入结果字符串,因为它会导致文件名无效(我的代码在文件中移动)。
this
后有一个空字节 ([=10=]
= %00),因此调试器不会显示字符串的其余部分。
所以解码后的值是正确的,这只是调试器的限制(或错误?)。
您也可以看看 here for more info about null byte from security perspective. And there is this question 发布的相关信息。