0


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");
标签: java

本文转载自: https://blog.csdn.net/qq_48322394/article/details/116600854
版权归原作者 是苹果没错了 所有, 如有侵权,请联系我们删除。

“JAVA URLDecoder.decode()解码“+“变空格”的评论:

还没有评论