我们不应该将 URLEncoder.encode 用于 URL 的地址部分,因为它错误地将您的http://domain.com/ {username} 更改为 http%3A%2F%2Fdomain.com%2{username} 并且您应该知道它会用“+”替换所有空格,我最好用“%20”替换它们。
在这里,此函数仅对 URL 的最后一部分进行编码,即 {username} 或文件名或任何可能包含非法字符的内容。
String safeUrl(String inUrl)
{
int fileInd = inUrl.lastIndexOf('/') + 1;
String addr = inUrl.substring(0, fileInd);
String fileName = inUrl.substring(fileInd);
String outUrl=null;
try {
outUrl = addr + URLEncoder.encode(fileName, "UTF-8");
outUrl = outUrl.replace("+", "%20");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return outUrl;
}