編碼模式與解碼模式
「編碼」是把普通文字轉成 Base64 字串,輸入的是人類可讀的文字,輸出是一串看似亂碼的英數字。「解碼」正好反過來,輸入 Base64 字串,還原出原始文字。選錯模式是最常見的錯誤:拿 Base64 字串去按編碼,只會得到更長的亂碼。
不確定手邊字串是哪一種?看特徵:Base64 字串通常很長、只含英數字與 +、/、=,結尾可能有一個或兩個 =。普通文字則一眼就能讀懂。
字元集:為什麼中文不會亂碼
工具在編碼前會先把文字轉成 UTF-8 位元組,再做 Base64 轉換;解碼時反向還原。只要兩端都用 UTF-8,中文、日文、emoji 都能完整來回。
亂碼幾乎都出在「另一端」:例如對方用 Big5 或 Latin-1 解讀同一串 Base64,就會看到亂碼。這時問題不在編碼工具,而是要跟對方確認字元集。
結尾的 = 是做什麼的
Base64 規定每 3 個位元組轉成 4 個字元,原文長度不是 3 的倍數時,就用 = 補到 4 的倍數。所以結尾出現一個或兩個 = 是正常的,不是壞掉。
有些場合(例如網址參數)會把 = 省略,解碼前記得補回去,否則長度不對會解碼失敗。這是格式細節,不是工具的問題。
常見問題
什麼時候該用編碼、什麼時候用解碼?
要把文字變成 Base64 字串傳出去時用編碼;拿到一串 Base64 想看原始內容時用解碼。看不懂的字串先試解碼,解出來是亂碼再換編碼試。
複製結果時需要連 = 一起複製嗎?
需要。= 是長度補齊的一部分,少了它解碼端可能報錯。除非對方明確說可以省略,否則完整複製最保險。
為什麼同一段文字每次編碼結果都一樣?
因為 Base64 是確定的編碼規則:相同輸入永遠得到相同輸出,這是正常的。另外要記住:Base64 是編碼、不是加密,任何人拿到字串都能解開,它不提供保密性。