如何在java中忽略对url中某些字符的编码?
我有一个如下的url:https://123.com/screen-shot-2021-02-25-at-7.31.10%2520PM.png
screen-shot-2021-02-25-at-7.31.10%2520PM.png
是文件名,%25是%
的编码值
这给了我一个404。我需要%
不被编码。在使用Google的UrlEscapers.urlFragmentEscaper().escape();
for Java编码url时,除了使用replace()
方法外,还有什么正确的方法可以忽略这一点
编码代码:
private static String FILENAME_REGEX = ".*//?(.*)$";
private static Pattern FILENAME_PATTERN = Pattern.compile(FILENAME_REGEX);
public String sanitizedURL(@NonNull String url) throws URISyntaxException {
String contentUrl = url;
Matcher matcher = FILENAME_PATTERN.matcher(url);
if (matcher.matches()) {
String filename = matcher.group(1);
String encodedFilename = UrlEscapers.urlFragmentEscaper().escape(filename);
contentUrl = url.replace(filename, encodedFilename);
//contentUrl = contentUrl.replace("%25", "%");
}
// validate this is a good URI
URI uri = new URI(contentUrl);
return uri.toString();
}
# 1 楼答案
试试UrlDecoder.decode(String s, String enc)
例如