在java中编码url避免使用特殊字符

时间:2014-02-27 21:04:38

标签: java encoding url-encoding

我需要传递编码的网址,但它也需要避免使用特殊字符。那我该怎么编码呢? stackoverflow上没有任何答案对我有用。任何人都可以帮忙吗?我想在java中这样做          public String tweet_quote_func(Map attrs,FilterParam param){

    String url = param.getShorturi();
    String text = attrs.get("display");

    if (url != null && text != null) {

        try {

            text = StringEscapeUtils.unescapeHtml(text); // for double quotes

            String encodedurl = "https://twitter.com/intent/tweet?url="+URLEncoder.encode(url, "UTF-8");
            encodedurl = encodedurl + "&text=" + StringUtil.escapeUrl(text);

            return "<span class=\"tweet_quote\"> <a href=" + encodedurl+ ">" + text.trim() + "<span></span></a></span>";

        } catch (UnsupportedEncodingException e) {
            System.err.println(e);
            return null;
        }
    } else
        return null;
}

1 个答案:

答案 0 :(得分:0)

您应该将URLEncoder用于所有URL查询参数名称​​和其值。不是StringUtils.escapeURL(),不管是什么。

我不知道你认为与特殊角色有什么不同&#34;。&#34;,&#34; - &#34;,&#34; *&# 34;和&#34; _&#34;&#39;,但URLEncoder被定义为做正确的事。

对于URL路径本身,您应该使用新的URI(null,path,null).toASCIIString()。