尝试使用时查询字符串会发生变化。
Query string changes when try to use it.
我有一个如下所示的查询字符串。
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD
然后我有一个带有 post 背面的按钮,如下所示:
protected void btn_Click(object sender, EventArgs e)
{
string URL = Request.QueryString["s"];
Response.Redirect("Page2.aspx?s="+URL);
}
但是当我到达第 2 页时,我在 URL 中输入的查询字符串将 % 符号更改为 # 并且解密失败,因为它在字符串中查找 % 以分隔我的所有页面有效有了那个解密,所以我不能改变工作的方式我需要知道为什么它会把 % 变成#
这是进入 Page2.aspx
时的样子
Page2.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X#53411389BBB9577E1FD
%23
是 #
字符的 url 编码代码。如果您看一下,它实际上是用 #
替换 %23
而不仅仅是 %
。在页面之间传递查询字符串信息时,您将需要检查它。
protected void btn_Click(object sender, EventArgs e)
{
string URL = Request.QueryString["s"];
Response.Redirect("Page2.aspx?s="+UrlEncode(URL));
}
它被翻译成 URL Encoded character。请注意,被替换的不仅是百分号,还有它后面的 23
。如果您查看维基百科页面上列出的 table,您会发现 %23
是 #
字符。
如果仔细检查查询字符串,您会发现 %
不是 #
,而是 %23
。这是因为 %
是一个转义字符,而 %23
代表 #
。你必须用 %25
:
来逃避 %
本身
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD
string URL = Request.QueryString["s"];
URL = Server.UrlEncode(URL); // This will allow it to keep the %23
Response.Redirect("Page2.aspx?s="+URL);
因为您得到的所有答案都是肯定的,这就是编码的原因只需确保您告诉它它是一个 UrlEncode,这样它就不会改变它。
我有一个如下所示的查询字符串。
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD
然后我有一个带有 post 背面的按钮,如下所示:
protected void btn_Click(object sender, EventArgs e)
{
string URL = Request.QueryString["s"];
Response.Redirect("Page2.aspx?s="+URL);
}
但是当我到达第 2 页时,我在 URL 中输入的查询字符串将 % 符号更改为 # 并且解密失败,因为它在字符串中查找 % 以分隔我的所有页面有效有了那个解密,所以我不能改变工作的方式我需要知道为什么它会把 % 变成# 这是进入 Page2.aspx
时的样子Page2.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X#53411389BBB9577E1FD
%23
是 #
字符的 url 编码代码。如果您看一下,它实际上是用 #
替换 %23
而不仅仅是 %
。在页面之间传递查询字符串信息时,您将需要检查它。
protected void btn_Click(object sender, EventArgs e)
{
string URL = Request.QueryString["s"];
Response.Redirect("Page2.aspx?s="+UrlEncode(URL));
}
它被翻译成 URL Encoded character。请注意,被替换的不仅是百分号,还有它后面的 23
。如果您查看维基百科页面上列出的 table,您会发现 %23
是 #
字符。
如果仔细检查查询字符串,您会发现 %
不是 #
,而是 %23
。这是因为 %
是一个转义字符,而 %23
代表 #
。你必须用 %25
:
%
本身
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD
string URL = Request.QueryString["s"];
URL = Server.UrlEncode(URL); // This will allow it to keep the %23
Response.Redirect("Page2.aspx?s="+URL);
因为您得到的所有答案都是肯定的,这就是编码的原因只需确保您告诉它它是一个 UrlEncode,这样它就不会改变它。