2012-04-12 71 views
0

我正在使用java的URLEncoder来接收用户提供的字符串并创建一个可安全用于文件名的字符串。我想知道的是,有可能将两个不同的字符串编码为相同的值。是否有可能与URLEncoder产生名称冲突

例如,如果一个字符串是“ABC%20D”,但由于%被用作替换特殊字符的字符,所以像“ABC D”和“ABC%20D”这样的东西都可能结束编码值?或者,编码器是否会将其他字符替换为%?

+0

你问这个应该开始在你的心中响起了警钟,这一事实... – Blindy 2012-04-12 21:08:26

+0

不是建设性的意见,但感谢。 – 2012-04-12 21:11:16

回答

2

似乎使用例如输入编码转义字符:

String result = URLEncoder.encode("ABC%20D", "UTF-8"); 
System.out.println(result); //prints ABC%2520D 
+0

对,我看到了这个特殊的例子。我只是不知道是否有可能发生碰撞,或者是否通常是为了避免碰撞而设计的。 – 2012-04-12 21:00:49