我在unity3d使用oauth传入签名是出现的问题“+”变空格
前段传入请求是URLEncoder.encode一次,但是在服务器被URLDecoder.decode解码了两次,应用服务器一次(jetty、tomcat)、后台一次。导致加号会变为空格
signature = Dln70nz4WSr+a01dSC1fuRgUpP3r916KcyC4IdzTSRccEB2JXF6+Zl+LsN6S/vuFHCu0w6jVk7PXiG0J5AnveA==
URLEncoder.encode(signature, "UTF-8"); 前端编码得到
Dln70nz4WSr%2Ba01dSC1fuRgUpP3r916KcyC4IdzTSRccEB2JXF6%2BZl%2BLsN6S%2FvuFHCu0w6jVk7PXiG0J5AnveA%3D%3D
传入后台先被jetty解码一次得到
Dln70nz4WSr+a01dSC1fuRgUpP3r916KcyC4IdzTSRccEB2JXF6+Zl+LsN6S/vuFHCu0w6jVk7PXiG0J5AnveA==
再被后台URLDecoder.decode解码一次得到(加号变成空格)
Dln70nz4WSr a01dSC1fuRgUpP3r916KcyC4IdzTSRccEB2JXF6 Zl LsN6S/vuFHCu0w6jVk7PXiG0J5AnveA==
所以常常会发现,在前端明明做了编码的处理,为什么加号会变为空格
解决的办法:做两次编码
URLEncoder.encode(URLEncoder.encode(signature, "UTF-8"), "UTF-8");
解决办法