类URLDecoder.decode是否处理双重编码?

时间:2013-12-19 10:47:37

标签: java urldecode

我正在尝试调试一个不稳定的Java应用程序。我不能(轻松地)以我知道的方式调试它 - 通过在其中放入一个日志语句并重新编译。然后检查日志。

(我无法访问一组可靠的源代码)。而且我不是Java开发人员。

实际问题:

如果我这样做了:

str = URLDecoder.decode("%25C3%2596");

什么是str?

它会意识到这是双重编码并处理即将其转换为%C3%96 - 然后解码吗? (其解码为德国变形金刚)。

由于

- Justin Wyllie

2 个答案:

答案 0 :(得分:0)

来自Java API URLDecoder

“%xy”形式的序列将被视为表示一个字节,其中xy是8位的两位十六进制表示。

所以我猜 - 很可能不是。

然而,您可以两次调用decode方法。

str = URLDecoder.decode(URLDecoder.decode("%25C3%2596"));

答案 1 :(得分:0)

str = URLDecoder.decode("%25C3%2596");

此操作的结果取决于系统(不推荐使用该方法的原因。)

this call的结果:

str = URLDecoder.decode("%25C3%2596", "UTF-8");

...将是%C3%96,它是百分比编码的UTF-8中的Ö。 API不会尝试以递归方式解码任何百分号。