【问题标题】:Query String Returning Different Values to that of the actual in the url查询字符串返回与url中实际值不同的值
【发布时间】:2014-05-08 06:02:33
【问题描述】:
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

^ 这是传递到服务器的原始查询,

但这在服务器上以非常不同的方式解析

例如: http://prntscr.com/3h90fs

http://prntscr.com/3h90o2

返回的字符串
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"

为什么会这样?是bug吗?

【问题讨论】:

  • 不要将代码发布为图像,将其发布为文本。以便于复制/粘贴。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 这不是我作为图像发布的代码,而是来自 MS Visual Studio 的调试信息显示了输出的差异。
  • 您使用的是 url 编码吗?如果没有,请使用它。
  • % 符号是否被认为是一个特殊字符或与事物混淆的东西?我用它作为分隔符

标签: asp.net .net vb.net http


【解决方案1】:

有很多字符是保留的,不能在查询字符串中使用。 % 就是其中之一。
您必须对字符串进行编码才能确保将其正确解码为服务器中的相同字符串。

在 C# 中可以这样做:

HttpContext.Current.Server.UrlEncode(destinationURL);

【讨论】:

  • 这是可行的,因为 % 是 url 中的保留字符(用于编码特殊字符)
【解决方案2】:

为什么会这样?

因为在您的值之间添加了任何(一些)空格(白色字符)。

这是一个错误吗?

不。这不是错误。

解决方案。

在发送查询字符串之前,您需要使用 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/

Request.QueryString giving me space instead of + sign

【讨论】:

  • 请求中没有空格
  • 请再看一次我的回答,我已经为此添加了一些链接。希望对您有所帮助!
  • 嘿thanx,虽然这不是确切的答案,但问题是我在请求中使用 % 符号作为分隔符,它以某种方式与它们对其他一些字符的编码混淆,所以我用另一个替换了 %字符“z”并相应地调整功能。 +1 链接并尝试帮助:D
  • -1 这是完全错误的。问题是 % 是保留字符,与空格无关。
猜你喜欢
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多