您好,匿名用户
随意问技术百科期待您的加入

java 如何判断 一个字符串是否被urlencode过

+2 投票

java 如何判断 一个字符串是否被 urlencode 过?
为了防止重复encode

用户头像 提问 2013年 1月6日 @ dongxldante 上等兵 (386 威望)
分享到:

1个回答

+1 投票
 
最佳答案

urldecode一下,再decode一下,前后一致即未encode过,前后不一致即encode过。(具体原理可参看URLDecoder的源码)

看了其他几位同学的回答。简单的补充一下:
1、对于"a-z", "A-Z", "0-9", ".", "-", "*", "_",encode/decode前后不产生任何变化,所以实际上无需判断;
2、" "被转换成"+",如果原字符串本来就含有"+",上述方法无效;
3、其他的字符,根据不同的字符集先被转换成一到多个byte,然后每个byte被表示成类似"%xy"的字符串,其中xy是该byte值的16进制表示形式。所以对于原字符串本来含有"%"或者"%xy",上述方法也无效,对于"%xy",如果xy为非法字符,则会抛出IllegalArgumentException。
所以如果需要得到精确的结果,需要自己另加额外的控制标志位。

用户头像 回复 2013年 1月6日 @ Wukong 上等兵 (475 威望)
选中 2013年 1月6日 @Saber
提一个问题:

相关问题

0 投票
1 回复 47 阅读
+2 投票
1 回复 85 阅读
用户头像 提问 2013年 2月12日 @ Soraka 上等兵 (319 威望)
0 投票
1 回复 78 阅读
+2 投票
1 回复 39 阅读
用户头像 提问 2013年 1月2日 @ Kyrie 上等兵 (240 威望)
0 投票
1 回复 33 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...