前端用base64加密後的數據,傳遞到後臺時發現一個問題:前端
好比 韓飛 這個名字,base64加密後的字符串爲java
6Z+p6aOe
可是後端接受到參數爲:後端
6Z p6aOe
+號變成了空格,致使後臺解密的時候出現異常。
解決辦法以下:
一、修改客戶端,將客戶端帶「+」的參數中的「+」所有替換爲「2B%」,這樣參數傳到服務器端時就能獲得「+」了。
二、修改服務器端,將空格替換爲「+」,這種方式只適用於參數中有「+」沒有空格的狀況。服務器
本人前端對參數使用base64加密,後端對該參數使用base64解密,使用了第二種方法,替換空格爲+號以後再解密。編碼
後端解碼時遇到一個問題,不能正確解碼:加密
import sun.misc.BASE64Decoder;
最後發現,是new String時沒有指定編碼方式。指定以後就沒問題了。spa
項目用的是utf-8編碼,可是直接code
merchantRelPerson = new String(b);
仍是亂碼,指定utf-8以後就行了。
utf-8