http://localhost:1079/BattleSimulator.aspx?userID=Unregistered_User&Troops=1111%1111%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0!1111%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0&Research=10%10%10%10%10%10%0!10%10%10%10%10%10%0&Sanctuary=0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0!0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0&Inventory=False%False%False%False%False%False!False%False%False%False%False%False&other=5!0&RNG=0&Dragons=-1%-1%-1%-1!-1%-1%-1%-1&BattleArts=0%0%0!0%0%0&Kaizer=2310000%1510000%0%15867000%910000%875!5011000%2810000%3158%182972948%2810000%803
^这是传递到服务器上的原始查询,
但是这在服务器上以非常不同的方式解析
从
返回的字符串Extention.QueryString("Troops")
是“111111%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0 %0%0%0%0%0%0%0%0%0!1111%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0 %0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0"
为什么会这样?这是一个错误吗?
答案 0 :(得分:2)
有许多字符是保留的,不能在查询字符串中使用。 %就是其中之一 您必须对字符串进行编码以确保它将被正确解码为服务器中的相同字符串。
在C#中,可以这样做:
HttpContext.Current.Server.UrlEncode(destinationURL);
答案 1 :(得分:1)
为什么会这样?
因为在您的值之间添加了任何(某些)空格(白色字符)。
这是一个错误吗?
不。这不是一个错误。
在发送查询字符串之前,您需要使用
Trim()
或在查询字符串值中使用Replace(" ","")
删除空值
查看此链接
Get Query String value containing spaces
Passing in a querystring with a space?
http://blogfornet.com/tag/how-to-use-space-in-url-query-string/