UrlDecoder解码几次

时间:2019-09-17 10:42:48

标签: java utf-8 decode urldecode

有没有可以完全解码String的方法?例如我有

monta%25C3%25B1a,如果我使用UrlDecoder.decode方法ONCE:它将返回monta%C3%B1a,如果我将AGAIN解码,则最终将返回montaña(即已完全编码的字符串)。是否有任何方法或库在Java中达到此结果?

1 个答案:

答案 0 :(得分:1)

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);