代码之家  ›  专栏  ›  技术社区  ›  Ankur

#字符似乎会导致get请求出现问题

  •  2
  • Ankur  · 技术社区  · 16 年前

    我有一个querystring,它传递给servlet的doget()方法,如下所示:

    count=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

    包括之后的所有内容都是空的,所以我假设有一些特殊的含义。这是真的吗?还有其他这样的角色可以做到吗?

    4 回复  |  直到 16 年前
        1
  •  4
  •   Michael Aaron Safyan    16 年前

    是的,表示散列。例如,它用于跳转到页面内的定位标记。无论何时将数据放入URL,都需要对其进行URL编码。在javascript中,您可以使用 encodeURIComponent() . 在其他语言中,您需要查找文档。

        2
  •  2
  •   lomaxx    16 年前

    作为一般经验法则,最好在将查询字符串参数发送到服务器之前对其进行urlencode。URL中的用于表示您当前所处的锚定位置,并在尝试将其发送到服务器时导致问题。

    有关URL编码的详细信息,请参见: http://www.w3schools.com/tags/ref_urlencode.asp

        3
  •  2
  •   John Hartsock    16 年前

    “”是一个特殊的字符。它引用了页面锚定中通常使用的哈希。您可以简单地在URL中对这个字符%23进行编码,这样就消除了这个问题。其他有意义的人物是?[空间]

        4
  •  2
  •   Rex M    16 年前

    这个 # 指示URL的定位部分,用于标识URL其余部分返回的文档中的特定位置。技术上被称为 Fragment portion of the URI.

    一切都跟着 γ 是其中的一部分。因为它只与返回和处理文档相关(同样,它代表文档中的一个位置),所以它只对客户端有意义。它对服务器没有意义或价值,客户机将把整个值视为一个单独的值(当然,除非您提供了额外的自定义代码来分解值并从中提取额外的意义)。

    如果你需要传递角色 γ 作为URL值的一部分,将其替换为 %23 -您可以使用 URL Encoding ,它将用可通过URI传输的字符替换所有“特殊”字符。

    推荐文章