我正在尝试调试一个不稳定的Java应用程序。我不能(轻松地)以我知道的方式调试它 - 通过在其中放入一个日志语句并重新编译。然后检查日志。
(我无法访问一组可靠的源代码)。而且我不是Java开发人员。
实际问题:
如果我这样做了:
str = URLDecoder.decode("%25C3%2596");
什么是str?
它会意识到这是双重编码并处理即将其转换为%C3%96 - 然后解码吗? (其解码为德国变形金刚)。
由于
- Justin Wyllie
答案 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不会尝试以递归方式解码任何百分号。