【问题标题】:Escaping & in a URL在 URL 中转义 &
【发布时间】:2010-02-04 07:21:48
【问题描述】:

我正在使用 jsps,在我的 url 中我有一个变量的值,比如“L & T”。现在,当我尝试使用request.getParameter 检索它的值时,我只得到“L”。它将“&”识别为分隔符,因此它不会被视为一个完整的字符串。

我该如何解决这个问题?

【问题讨论】:

  • 给出一些代码 - 你是如何将“L&T”放在地址栏中的?

标签: java jsp url uri


【解决方案1】:
java.net.URLEncoder.encode("L & T", "utf8")

这会输出 URL 编码的,可以作为 GET 参数:

L+%26+T

【讨论】:

  • 带有第二个字符编码参数的那个?
  • 好的,我的评论放错了,我会删除它
【解决方案2】:

URL 中的文字 & 符号应编码为:%26

// Your URL
http://www.example.com?a=l&t

// Encoded
http://www.example.com?a=l%26t

【讨论】:

    【解决方案3】:

    您需要对参数进行“URL 编码”以避免此问题。 URL 查询字符串的格式为: ...?<name>=<value>&<name>=<value>&<etc> 所有<name>s 和<value>s 都需要进行URL 编码,这基本上意味着将所有可能被错误解释的字符(如&)转换为% 转义值。有关更多信息,请参阅此页面: http://www.w3schools.com/TAGS/ref_urlencode.asp

    如果您使用 Java生成问题 URL,则使用以下方法: String str = URLEncoder.encode(input, "UTF-8");

    在其他地方生成 URL(一些模板或 JS 或原始标记),您需要从源头解决问题。

    【讨论】:

      【解决方案4】:

      您可以使用 Spring Web 中的UriUtils#encode(String source, String encoding)。该实用程序类还提供了仅对 URL 的某些部分进行编码的方法,例如 UriUtils#encodePath

      【讨论】:

        猜你喜欢
        • 2023-01-20
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        • 2013-05-13
        • 2022-01-10
        • 2011-11-04
        相关资源
        最近更新 更多