URl 傳參時+號變成空格


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

比如 韓飛 這個名字,base64加密后的字符串為

6Z+p6aOe

但是后端接受到參數為:

6Z p6aOe

+號變成了空格,導致后台解密的時候出現異常。
解決辦法如下:
1、修改客戶端,將客戶端帶“+”的參數中的“+”全部替換為‍“2B%”,這樣參數傳到服務器端時就能得到“+”了。
2、修改服務器端,將空格替換為“+”,這種方式只適用於參數中有‍“+”沒有空格的情況。

本人前端對參數使用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時沒有指定編碼方式。指定之后就沒問題了。

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

merchantRelPerson = new String(b);

還是亂碼,指定utf-8之后就好了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM