【问题标题】:POST Method replacing the '+' charactersPOST 方法替换 '+' 字符
【发布时间】:2012-05-03 11:54:14
【问题描述】:

嘿嘿。我正在使用 POST 方法将一些信息从 JSP 发送到 Servlet。我不明白为什么当我通过 POST 方法发送一个“+”字符时,它将被替换为一个空格字符。示例:当我键入以下字符串时: 4+5 -> Servlet 将返回 4 5;它取代了所有的“+”号。我该如何解决这个问题?我真的需要“+”字符可见,因为之后我需要评估表达式。

【问题讨论】:

  • "+" 是一个特殊字符。在 URL 中,您需要对其进行编码,将其替换为“%2B”。这是一个特殊字符替换的列表:blooberry.com/indexdot/html/topics/urlencoding.htm
  • @BenoitCourtine 数据是通过 POST 发送的,而不是作为 URL 的一部分。但是,该帖子很可能是使用 application/x-www-form-urlencoded 的内容类型发送的,这使您的基本观点仍然有效。

标签: java jsp servlets post


【解决方案1】:

在编码 URL 时,+ 字符表示一个空格。如果您需要在 URL 中使用此字符,则必须像这样对其进行转义:

4+5

变成

4%2B5

【讨论】:

    【解决方案2】:

    servlet 显然希望数据通过 URL 编码到达,如 W3 document on HTTP form submission 中所述。您需要更改 POST 的内容类型或(更好地)对您发送的数据进行编码。您可以将“+”号编码为“%2B”。

    【讨论】:

      【解决方案3】:

      在将数据发送到服务器之前,您需要 URLEncode 您的数据。服务器正在尝试解码未编码的数据——结果是+被解码为一个空格。

      【讨论】:

        【解决方案4】:

        表单变量通过 URL 编码发送。 “+”加号是(一个)空格的 URL 编码。

        另请参阅: AJAX POST and Plus Sign ( + ) -- How to Encode?

        如果要发送文字加号,则需要通过 Javascript 或硬编码的“%2B”对其进行 URL 编码。

        【讨论】:

          猜你喜欢
          • 2012-09-25
          • 2013-07-27
          • 2019-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多