有些參數需要在url的GET裏傳遞,但是爲了防止特殊字符問題,我轉成了base64編碼。
但是js進行解碼的時候,總是報錯:
報錯: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
這是因爲base64在url中會進行url編碼,+號會被轉成%20
這就需要我們在拿到get參數後,進行url解碼,js自帶的解碼函數會把%20轉成空格,這時就會轉碼失敗
下面函數是一些兼容處理
function urlDecode(str) { return decodeURIComponent(str.replace(/\%20/g, '+')); } // Base64解密 function b64DecodeUnicode(str) { str=urlDecode(str); return decodeURIComponent(atob(str.replace(/\_/g, '/').replace(/\-/g, '+')) .split('') .map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }) .join('')); }