使用base64的初衷。是為了方便把含有不可見字符串的信息用可見字符串表示出來
我們知道在計算機中任何數據都是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字符。
而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由於不同的設備對字符的處理方式有壹些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利於傳輸的。所以就先把數據先做壹個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。
urlencode
url編碼主要是為了解決壹些url中的壹些特殊字符和歧義字符或者中文字符的傳輸問題,
1. base64編碼裏面有壹個 “+” 號,在urlecode編碼中 “+” 會被解碼成空格,urlencode時,"+" 號肯定是由空格編碼出來的,但是base64編碼的結果中 "+" 不是空格編碼出來的,如果將base64編碼作為安全的url編碼使用,則 “+” 將被解碼成空格,這是我們不願看到的; 所以不要base64編碼作為url編碼來使用.
2. 我們知道Npb25fbm8iOjF9fQ==
Base64編碼 使用的字符包括大小寫字母各26個,加上10個數字,和加號“+”,斜杠“/”,壹***64個字符,等號“=”用來作為後綴用途。
其中的+, /, = 都是需要urlencode的,所以無法取代。
不能,base64有轉碼功能:
由於 ASCII 碼稱為了國際標準,所以我們要把其它字符轉成 ASCII 就要用到 base64。
utf-8 -> base64(編碼) -> ASCII
ASCII -> base64(解碼) -> utf-8
這樣就可以讓只支持 ASCII 的計算機支持 utf-8 了。
參考: https://juejin.im/post/5b7d50106fb9a019d7475785