使用 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");

希望对您有所帮助!