【问题标题】:How to represent a string URL for special character?如何表示特殊字符的字符串 URL?
【发布时间】:2011-05-27 10:14:40
【问题描述】:

我是新手,找不到确切的答案。我的 URL 中有特殊字符,例如,

"&", "#", "?" "<"

它会导致问题。 (如果有人可以建议如何处理这种情况,那将是一个额外的帮助)。我的主要问题是,如何在 JAVA 中为以下 URL 表示字符串文字?

"x###y"

我了解到我们需要输入其hex 代码值(使用%)。有人可以提出解决此 URL 问题的确切答案吗?

【问题讨论】:

    标签: java string url special-characters


    【解决方案1】:

    您需要对地址进行 URL 编码。

    见:-

    http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

    【讨论】:

    • URLEncoder 用于表单编码而不是 URL 编码。 “...HTML 表单编码....”但我同意命名非常糟糕并引起误解
    【解决方案2】:
    java.net.URLEncoder.encode(YOUR_STRING, "UTF-8");
    

    另请参阅this question,了解仅对您需要的部分 url 进行编码的方法:

    【讨论】:

      【解决方案3】:

      答案取决于数据在 URL 中的位置。 URL的不同部分会有不同的编码规则。

      确切的形式也可能取决于服务器期望的 URI 格式。

      查询部分的参数通常可以使用URLEncoder编码为application/x-www-form-urlencoded

      String query = URLEncoder.encode("key1", "UTF-8")
                   + "="
                   + URLEncoder.encode("value1", "UTF-8")
                   + "&"
                   + URLEncoder.encode("key2", "UTF-8")
                   + "="
                   + URLEncoder.encode("value2", "UTF-8");
      

      如果您需要在 URI 的其他部分(路径部分或片段部分)进行编码,请阅读 this

      【讨论】:

        【解决方案4】:
        URLEncoder is not for encoding URLs it is there to encode form data
        

        查看以下链接了解更多详情

        HTTP URL Address Encoding in Java

        【讨论】:

          猜你喜欢
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-27
          • 2011-05-16
          • 1970-01-01
          • 2010-11-19
          相关资源
          最近更新 更多