我有一个queryString,我将其传递给servlet的doGet()方法,如下所示:
计数= 9&安培; preId0 = -99&安培; objId0 = -99&安培; preId1 = -99&安培; objId1 = -99&安培; preId2 = 69&安培; objId2 = 16#78&安培;!preId3 = -99&安培; objId3 = -99&安培; preId4 = -99&安培; objId4 = -99&安培; preId5 = -99&安培; objId5 = -99&安培; preId6 = -99&安培; objId6 = -99&安培; preId7 = -99&安培; objId7 = -99&安培; preId8 = -99&安培; objId8 = -99
包含#之后的所有内容都为null,所以我假设#有一些特殊含义。这是真的?还有其他这样的角色会这样做吗?
答案 0 :(得分:4)
是的,#表示哈希值。例如,这用于跳转到页面内的锚标签。无论何时将数据放入URL,都需要对其进行URL编码。在JavaScript中,您可以使用encodeURIComponent()
。在其他语言中,您需要查找文档。
答案 1 :(得分:2)
#
表示URL的锚点部分,用于标识URL其余部分返回的文档中的特定位置。它在技术上称为Fragment portion of the URI.
#
之后的所有内容都是其中的一部分。因为只有在文档被返回和处理时才会相关(再次,它代表该文档中的位置),它只对客户感兴趣。它对服务器没有任何意义或价值,客户端会将整个值视为单个值(除非您提供额外的自定义代码来分解值并从中提取其他含义)。
如果您需要将字符#
作为网址中值的一部分传递,请将其替换为%23
- 您可以使用URL Encoding以编程方式执行此操作,这将取代所有“特殊的“具有可通过URI传输的字符。
答案 2 :(得分:2)
作为一般的经验法则,在将查询字符串参数发送到服务器之前,最好对其进行URLENCODE。 url中的#用于表示您当前所处的锚点,并在尝试将其发送到服务器时导致问题。
有关网址编码的更多信息,请访问:http://www.w3schools.com/tags/ref_urlencode.asp
答案 3 :(得分:2)
“#”是一个特殊字符。它引用了页面锚点中通常使用的哈希。您可以在网址中简单地对此字符%23进行编码,这将消除此问题。其他有意义的人物是? [空间]&