URl 傳參時+號變成空格

前端用base64加密後的數據,傳遞到後臺時發現一個問題:前端

好比 韓飛 這個名字,base64加密後的字符串爲java

6Z+p6aOe

可是後端接受到參數爲:後端

6Z p6aOe

+號變成了空格,致使後臺解密的時候出現異常。
解決辦法以下:
一、修改客戶端,將客戶端帶「+」的參數中的「+」所有替換爲‍「2B%」,這樣參數傳到服務器端時就能獲得「+」了。
二、修改服務器端,將空格替換爲「+」,這種方式只適用於參數中有‍「+」沒有空格的狀況。服務器

本人前端對參數使用base64加密,後端對該參數使用base64解密,使用了第二種方法,替換空格爲+號以後再解密。編碼

後端解碼時遇到一個問題,不能正確解碼:加密

import sun.misc.BASE64Decoder;
  1. merchantRelPerson = merchantRelPerson.replace( " ", "+");
  2. BASE64Decoder decoder = new BASE64Decoder();
  3. byte[] b = null;
  4. b = decoder.decodeBuffer(merchantRelPerson);
  5. merchantRelPerson = new String(b, "utf-8");

最後發現,是new String時沒有指定編碼方式。指定以後就沒問題了。spa

項目用的是utf-8編碼,可是直接code

merchantRelPerson = new String(b);

仍是亂碼,指定utf-8以後就行了。

utf-8

相關文章
相關標籤/搜索