使用 US-ASCII 字符集对 URL 进行编码
Encode URL with US-ASCII character set
我参考了以下网站:
http://coderstoolbox.net/string/#!encoding=xml&action=encode&charset=us_ascii
选择 "URL"、"Encode" 和 "US-ASCII",输入将转换为所需的输出。
如何使用 Java 代码生成相同的输出?
提前致谢。
您可以使用ESAPi.encoder().encodeForUrl(linkString)
查看有关 encodeForUrl 的更多详细信息https://en.wikipedia.org/wiki/Percent-encoding
如果不满足您的要求或遇到任何其他问题,请发表评论。
谢谢
我用过这个,它似乎工作正常。
public static String encode(String input) {
Pattern doNotReplace = Pattern.compile("[a-zA-Z0-9]");
return input.chars().mapToObj(c->{
if(!doNotReplace.matcher(String.valueOf((char)c)).matches()){
return "%" + (c<256?Integer.toHexString(c):"u"+Integer.toHexString(c));
}
return String.valueOf((char)c);
}).collect(Collectors.joining("")).toUpperCase();
}
PS:我使用 256 将前缀 U 的位置限制为 non-ASCII 个字符。对于 256 以内的标准 ASCII 字符,不需要前缀 U。
Alternate option:
有一个 built-in Java class (java.net.URLEncoder
) URL 编码。但它的工作方式略有不同(例如,它不会用 %20
替换 Space 字符
,而是用 +
替换。其他字符也会发生类似情况也)。 See if it helps:
String encoded = URLEncoder.encode(input, "US-ASCII");
希望对您有所帮助!
我参考了以下网站:
http://coderstoolbox.net/string/#!encoding=xml&action=encode&charset=us_ascii
选择 "URL"、"Encode" 和 "US-ASCII",输入将转换为所需的输出。
如何使用 Java 代码生成相同的输出?
提前致谢。
您可以使用ESAPi.encoder().encodeForUrl(linkString)
查看有关 encodeForUrl 的更多详细信息https://en.wikipedia.org/wiki/Percent-encoding
如果不满足您的要求或遇到任何其他问题,请发表评论。
谢谢
我用过这个,它似乎工作正常。
public static String encode(String input) {
Pattern doNotReplace = Pattern.compile("[a-zA-Z0-9]");
return input.chars().mapToObj(c->{
if(!doNotReplace.matcher(String.valueOf((char)c)).matches()){
return "%" + (c<256?Integer.toHexString(c):"u"+Integer.toHexString(c));
}
return String.valueOf((char)c);
}).collect(Collectors.joining("")).toUpperCase();
}
PS:我使用 256 将前缀 U 的位置限制为 non-ASCII 个字符。对于 256 以内的标准 ASCII 字符,不需要前缀 U。
Alternate option:
有一个 built-in Java class (java.net.URLEncoder
) URL 编码。但它的工作方式略有不同(例如,它不会用 %20
替换 Space 字符
,而是用 +
替换。其他字符也会发生类似情况也)。 See if it helps:
String encoded = URLEncoder.encode(input, "US-ASCII");
希望对您有所帮助!