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");//编码
这样操作后可以得到文章来源:https://www.toymoban.com/news/detail-421744.html
Df689u+3u9ir1zqkjfk9loJ2cw%3D%3D
我们需要对+进行替换后 再次解码 即可
完整代码如下文章来源地址https://www.toymoban.com/news/detail-421744.html
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 URLDecoder.decode()解码“+“变空格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!