【发布时间】:2016-01-12 02:49:12
【问题描述】:
在 QueryString 中我有一个看起来像这样的部分
...u4w51EEcg8%2bj04e7C....
当我使用 HttpUtility.UrlDecode 时,代表“+”的部分“%2b”会变成一个空格。 我首先使用 HttpUtility.UrlEncode 对字符串进行编码。
有人知道发生了什么吗?
【问题讨论】:
标签: c# url query-string
在 QueryString 中我有一个看起来像这样的部分
...u4w51EEcg8%2bj04e7C....
当我使用 HttpUtility.UrlDecode 时,代表“+”的部分“%2b”会变成一个空格。 我首先使用 HttpUtility.UrlEncode 对字符串进行编码。
有人知道发生了什么吗?
【问题讨论】:
标签: c# url query-string
你要解码两次吗?为方便起见,URL 中的+ 登录会解码为(空格,0x20)。虽然%2b 应该解码为+,但解码后会得到。
编辑:刚刚看到您的自我回答,是的,请始终检查您的 getter 函数/属性是否自动为您解码。双重解码通常不会产生预期的结果,甚至会导致安全风险。
【讨论】:
看起来“Request.QueryString[]”会解码它得到的任何东西,所以发生的事情是我将 QueryString 解码了 2 次,这使得“+”成为一个空格。
【讨论】: