我有一个看起来像这样的查询字符串。
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%2353411389BBB9577E1FD
然后我有一个回帖看起来像这样的按钮:
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
答案 0 :(得分:4)
%23
是#
字符的网址编码代码。如果你看,它实际上用%23
代替#
,而不只是%
。在页面之间传递查询字符串信息时,您需要检查它。
protected void btn_Click(object sender, EventArgs e)
{
string URL = Request.QueryString["s"];
Response.Redirect("Page2.aspx?s="+UrlEncode(URL));
}
答案 1 :(得分:3)
如果仔细检查查询字符串,您会发现%
不是#
,而是%23
。这是因为%
是转义字符,而%23
代表#
。您必须使用%
转义%25
本身:
Page.aspx?s=C94CA8CCAFB12E2B669735186D327D1B3E505538139A66C8455X%252353411389BBB9577E1FD
答案 2 :(得分:3)
string URL = Request.QueryString["s"];
URL = Server.UrlEncode(URL); // This will allow it to keep the %23
Response.Redirect("Page2.aspx?s="+URL);
正如你得到的所有答案那样,编码的原因只是确保你告诉它它是一个UrlEncode所以它不会改变它。
答案 3 :(得分:1)
它被翻译为URL Encoded character。请注意,它不仅仅是被替换的百分号,而且还有跟随它的23
。如果您查看维基百科页面上列出的表格,您会看到%23
是#
字符。