1. 程式人生 > >http中傳遞base64字串,含‘+’符號,自動變成空格的問題

http中傳遞base64字串,含‘+’符號,自動變成空格的問題

今天遇到base64加密向後端傳值的問題,本來經過加密已經傳過去了,但是沒有返回成功的結果。於是,與後端同事配合,找找問題所在。發現是加密後的字串中有一個“+”符號,在傳之前console.log了一下,是顯示這個符號的,但是傳輸過去在去識別,就換成空格了。在網上找到的大神們的做法,看到一個簡潔有效的,在此記錄一下:

首先,在string原型上建立一個替換字串的方法:

String.prototype.replaceAll  = function(s1,s2){
    return this.replace(new RegExp(s1,"gm"),s2);
};

再次,在程式碼中,就可以使用該方法進行字串的替換了,也不僅僅是“+”這個符號,一通百通:

var a = "dggdger4+g5ty34"
var b = a.replaceAll("\\+", "%2B");
console.log(b); // 輸出為dggdger4%2Bg5ty34

將“+”符號轉換為url可以識別ASCII 字元(十六進位制格式):“%2B”。這樣在傳輸就可以了。以上