Base64 編碼與解碼

把文字或檔案編成 Base64,或把 Base64 還原成文字。可以選字元編碼,預設是 UTF-8。選 Hex 時,可以和十六進位字節互轉。計算都在瀏覽器裡完成。

Base64 解決的是“字節不能直接放進文本”的問題

JSON、HTML、郵件和很多設定項只接受可見字元。Base64 把任意字節變成字母、數字、加號和斜線,方便搬運。它不是加密,誰都能還原。適合把小檔案、UTF-8 字串放進文本接口,不適合拿來藏密碼。

這一頁在瀏覽器裡完成。字元編碼決定文字變成哪些字節,預設是 UTF-8,也是現在接口對中文、表情和帶音標字母的做法。對方如果是舊系統,可以改成 Big5、GBK 或 UTF-16。選 Hex 時,輸入框裡是十六進位字節,可以把 Base64 和十六進位互轉。檔案按原始字節讀取,不看這個選項,PNG 或 PDF 不會被當成文本改寫。內容不會上傳。

  • 標準字元表使用 + 和 /,並用 = 補齊。MIME 和多數語言的標準庫都是這套。
  • URL 安全字元表把它們換成 - 和 _,並去掉補齊。JWT 的每一段和不少查詢參數用的是這套。
  • 76 列換行對應郵件裡的 MIME 行寬。要貼進 JSON 時把換行關掉。
  • data URI適合直接放進 img 或 CSS 的 url()。圖片要選檔案來編碼,不要只編碼檔案名。

怎麼用

  1. 貼上文字,或選擇檔案。選了檔案就按字節編碼,不再使用文本框裡的內容。
  2. 選擇編碼或解碼。解碼同時接受標準和 URL 安全兩種寫法,空格和換行會被忽略。
  3. 編碼時再選字元表和是否換行。只有下一步是 HTML 或 CSS 時才勾選 data URI。
  4. 短字串可以開著“邊輸入邊更新”。大檔案要等讀取結束才會出結果。
  5. 複製或下載。解碼失敗通常是字串被截斷,或根本不是 Base64。

它實際按什麼規則算

每 3 個字節變成 4 個字元。長度不是 3 的倍數時,用 = 補到 4 的倍數。URL 安全模式會去掉這些補齊字元,解碼時再補回去。

data:text/plain;base64,aGVsbG8= 這種寫法可以解碼:只取逗號後面的部分。郵件裡按 76 列折行的內容也能解,因為空白會被丟掉。

字元編碼會先改變字節,再做 Base64。“中文”在 UTF-8 裡是 6 個字節,在 Big5 或 GBK 裡通常是 4 個字節,所以兩套 Base64 不一樣。如果別的工具結果不同,先把編碼改成和它一樣,或改成 Hex 對字節。想單獨看字節可以用 字串轉字節,百分比編碼見 網址編碼。

常見問題

解碼出來是亂碼?

這些字節用目前編碼讀不成文字。舊系統的中文可以試 Big5、GBK 或 UTF-16,也可以切到 Hex 看原始字節。圖片、壓縮包解碼後不會是可讀句子。檔案按原始字節編碼,不使用字元編碼選項。

帶 - 和 _ 的字串能解嗎?

能。解碼不要求你先切換字元表。

末尾的等號必須有嗎?

各家庫要求不一樣。這裡解碼允許缺少補齊。如果對方的解析器很嚴,編碼時不要選 URL 安全,把 = 留下來。

這樣算加密了嗎?

不算。Base64 可以完整還原。不要把密碼或私鑰貼進來就以為別人看不到。