JAVA URLEncoder 与URLDecoder 问题

今天发现两个关于java URL编码解码的误区:

1:URLEncoder 进行编码两次 值是一样的 ?

 

String aa="测试";
String test=URLEncoder.encode(aa,"UTF-8");
System.out.println(test);
System.out.println(URLEncoder.encode(test,"UTF-8"));

 output:

 

 

%E6%B5%8B%E8%AF%95
%25E6%25B5%258B%25E8%25AF%2595

 原来URLEncoder  进行编码时使用%作为转义标记,除了字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_"  ,空格转换为加号 (+) 外,都转换成"%xy"的形式,xy是两位16进制的数值;

 

 无论什么编码 百分号还是会编码为%25 这样的话无论编码多少次结果都会不一样。

 

2:URLDecoder 解码汉字会与原文不同?

如上述所示:URLDecoder 解码会找+ 号和%xy 进行解码,其他值都会不变。所以下面程序是

String aa="测试+测试%25";
String test2=URLDecoder.decode(aa,"UTF-8");
System.out.println(test2);

  output:

测试 测试%

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值