使用US-ASCII字符集编码URL

时间:2017-02-15 10:25:03

标签: java encoding character-encoding ascii url-encoding

我参考以下网站:

http://coderstoolbox.net/string/#!encoding=xml&action=encode&charset=us_ascii

选择“URL”,“编码”和“US-ASCII”,输入将转换为所需的输出。

如何使用Java代码生成相同的输出?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以使用ESAPi.encoder().encodeForUrl(linkString)

查看有关encodeForUrl https://en.wikipedia.org/wiki/Percent-encoding

的更多详细信息

如果不符合您的要求或面临任何其他问题,请发表评论。

由于

答案 1 :(得分:0)

我用过它,似乎工作正常。

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到非ASCII字符的位置。对于256以内的标准ASCII字符,不需要前缀U.

  

替代选项:

在构建Java类(java.net.URLEncoder)中有一个URL编码。但它的工作方式略有不同。 See if it helps

String encoded = URLEncoder.encode(input, "US-ASCII");

希望这有帮助!