我需要传递编码的网址,但它也需要避免使用特殊字符。那我该怎么编码呢? 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;
}
答案 0 :(得分:0)
您应该将URLEncoder用于所有URL查询参数名称和其值。不是StringUtils.escapeURL(),不管是什么。
我不知道你认为与特殊角色有什么不同&#34;。&#34;,&#34; - &#34;,&#34; *&# 34;和&#34; _&#34;&#39;,但URLEncoder被定义为做正确的事。
对于URL路径本身,您应该使用新的URI(null,path,null).toASCIIString()。