UrlDecoder 多次解码

UrlDecoder decode several times

是否有任何方法可以完全解码 String ?例如我有

monta%25C3%25B1a ,如果我使用 UrlDecoder.decode 方法一次:它 returns monta%C3%B1a 如果我再次解码,它最终 returns montaña (即完全解码的字符串)。Java 中是否有任何方法或库可以实现此结果?

monta[%25]C3[%25]B1a
monta  %  C3  %  B1a    which has a UTF-8 multi-byte sequence
monta       ñ      a

使用与编码时相同的字符集进行解码很重要。 显然它被 URL 编码了两次,首先是 UTF-8,然后 % 仍然编码了一次。

应该修复两次编码,否则会留下难以理解的补丁:

s = URLDecoder.decode(s, StandardCharsets.UTF_8);
s = URLDecoder.decode(s, StandardCharsets.UTF_8);