JAVA URLDecoder.decode()解码“+“变空格

JAVA URLDecoder.decode()解码"+"变空格

java解决一个bug 后端对字符串解码的时候+ 变成空格 导致无法正确匹配
网上看了很多 都没有解决我的问题 可能是我情况特殊 解决问题后得到以下两种解决办法

1 前端传过来+ 字符串编码正确 如下图

Df689u%2B3u9ir1zqkjfk9loJ2cw%3D%3D

我需要解码的字符串如上图
如果传过来的字符 + 为“%2B” 只需要进行一次编码 两次解码即可

String encode = URLEncoder.encode("Df689u%2B3u9ir1zqkjfk9loJ2cw%3D%3D","utf-8");
String decode = URLDecoder.decode(URLDecoder.decode(encode, "utf-8"), "utf-8");

2特殊 + 字符串编码为%20

字符串如下

Df689u%203u9ir1zqkjfk9loJ2cw%3D%3D

不是**%2B** 而是**%20** 这种情况就比较麻烦
但是可以通过一下方法解决 先解码再编码 此时我们可以的到“+” 但是此时得到如下结果

 String decode= URLDecoder.decode("Df689u%203u9ir1zqkjfk9loJ2cw%3D%3D", "utf-8");//解码
 String encode= URLEncoder.encode(userPhoneDesdecode, "utf-8");//编码

这样操作后可以得到

Df689u+3u9ir1zqkjfk9loJ2cw%3D%3D

我们需要对+进行替换后 再次解码 即可
完整代码如下

 String decode= URLDecoder.decode("Df689u%2B3u9ir1zqkjfk9loJ2cw%3D%3D", "utf-8");//解码
 String encode= URLEncoder.encode(userPhoneDesdecode, "utf-8");//编码
 String userPhoneDesRplace = userPhoneDesEncode.replace("+", "%2B");//替换
  result = URLDecoder.decode(userPhoneDesRplace, "utf-8");
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值