fixmint
ZH-TW

Base64 完整解說:為何會變大,以及如何解碼

作者: · · 更新於 2026年11月8日 · 閱讀約 5 分鐘

Base64 用 64 個字元把二進位資料寫成純文字,這 64 個字元是 A 到 Z、a 到 z、0 到 9,再加上 + 和 /。每三個位元組會變成四個字元,所以文字會比它所包含的資料長約三分之一。當格式只接受文字時就會用到它,例如網頁中的資料 URL、JSON 欄位或電子郵件附件。

Base64 編碼與解碼讀取或製作 Base64 字串免費使用

文字格式為何需要它

許多格式原本就只為文字設計。電子郵件內文、JSON 檔案和 CSS 檔案可以安全地存放字母與符號,但原始的圖片或 zip 檔含有某些系統可能會改寫、截斷或誤讀為控制碼的位元組值。Base64 只使用每個文字系統都會原樣傳遞的字元,因此資料能完整送達。它定義於 RFC 4648。

Base64 是一種編碼,不是加密。任何人都能不用金鑰解碼,因此絕對不能用它來隱藏密碼或個人資料。

三個位元組如何變成四個字元

以「Man」三個字母為例,它是三個位元組,十進位值分別為 77、97 和 110。這三個位元組合起來是 24 個位元。把這 24 個位元切成四組,每組六個位元,每一組就是 0 到 63 之間的數字,對應字母表中的一個字元。「Man」因此變成 TWFu。

六個位元只能表示 64 種值,所以四個字元只能承載三個位元組。因此在加入任何換行之前,輸出大約會比輸入大三分之一。

當資料無法被三個位元組整除時,編碼器會在結尾補上 = 號。「Ma」是兩個位元組,會變成 TWE=;「M」是一個位元組,會變成 TQ==。補上的符號告訴解碼器最後一組包含幾個位元組。

文字必須先以 UTF-8 編碼

Base64 處理的是位元組,而文字是由字元組成。像 é 或 ✓ 這樣的字元,在網路上通用的 UTF-8 編碼中會佔用不只一個位元組。瀏覽器的 btoa() 函式接受字串,並把每個字元當作一個位元組處理,因此遇到基本拉丁字母範圍以外的字元就會失敗。對勾符號 ✓ 一旦傳入,就會丟出 InvalidCharacterError。

解法是先把文字轉成 UTF-8 位元組,再對這些位元組進行編碼。片語 héllo ✓ 在 UTF-8 中是 10 個位元組,其 Base64 為 aMOpbGxvIOKckw==。Base64 工具會替你完成這個步驟。解碼時,它會以 UTF-8 把位元組讀回文字。若位元組不是有效的 UTF-8 文字,工具會將其視為檔案,並提供下載。

網址安全的 Base64

標準字母表包含 + 和 /。在網址中,+ 可能代表空白,/ 則用來分隔路徑的各個部分,因此 Base64 字串可能會破壞連結。網址安全格式(RFC 4648 第 5 節)改用 - 和 _,並通常省略 = 補位。當字串要放進網址、檔名或權杖時就使用它。解碼器兩種格式都接受,有無補位皆可。

如果 Base64 是從連結中取得的,請先解碼網址。連結中經過百分号編碼的值,必須先解碼才能讀取其 Base64 內容。百分號編碼指南說明了連結的相關規則。

最常見的情況是登入權杖:JSON Web Token 由三個以點號相連的 Base64url 部分組成,即標頭、資料與簽章。JWT 解碼器會把它拆開,並將標頭和資料以易讀的 JSON 顯示。

資料 URL 與圖片

資料 URL 會把檔案直接放進連結本身。其格式為 data:,接著是媒體類型,然後是 ;base64,再加上逗號與資料。一張小圖片會變成 data:image/png;base64,後面接著編碼後的位元組。網頁和樣式表都接受這種格式,對於微小的圖示來說,這樣可以省下一次請求。

代價是體積。資料會大約增加三分之一,而且它是嵌在頁面或樣式表中傳送,而不是瀏覽器可以快取的獨立檔案。資料 URL 適合小型圖片,不適合大型照片。如果照片很大,請在編碼前先壓縮照片。

在工具中解碼 Base64 時,它會檢查資料的前幾個位元組。PNG、JPEG、GIF 和 WebP 檔案各自以已知的檔頭開始,因此工具會顯示預覽並提供下載。媒體類型為圖片的資料 URL 也會以圖片形式顯示。

如何在 fixmint 中操作

  1. 在文字或 Base64 上方選擇編碼或解碼,然後貼上你的文字或 Base64。
  2. 若是用於權杖、檔名或連結,請勾選網址安全字母表,不含 = 補位。無論如何,解碼器兩種格式都接受。
  3. 若要從檔案產生資料 URL,請將檔案拖放到放置區,並勾選檔案:輸出 data: URL。
  4. 複製結果。若解碼後的位元組是檔案而非文字,請使用工具提供的下載。

常見的解碼錯誤

  • 含有不允許的字元。 輸入中包含 64 個字元以外的字元,例如從複製的句子中帶入的引號。請檢查文字的來源。複製的文字中若含有零寬空格,也會產生同樣的錯誤,因此請移除隱藏字元後再試一次。隱藏字元指南說明了它們的來源。
  • 長度不正確。 缺少或多出了一個字元,通常代表複製時內容被截斷。
  • 換行與空白。 電子郵件(MIME)會每 76 個字元折行一次。解碼器會移除空白與換行,因此你可以直接貼上折行過的文字。
  • 缺少補位。 有些系統會省略 = 號,解碼器會自動補回。

特殊情況

  • 解碼結果看起來像亂碼。 它可能是檔案而非文字。zip 檔、PDF 或程式解碼後的位元組無法被讀為文字。工具會將這些結果提供為下載。
  • 非常大的輸入。 編碼或解碼時,整個檔案都會保存在瀏覽器中,因此非常大的檔案可能會很慢,在手機上甚至可能失敗。

快速解答

Base64 和加密是一樣的嗎?

不是。它是一種可逆的編碼,沒有金鑰,任何人都能解碼。

為什麼我的 Base64 比檔案還長?

每三個位元組會變成四個字元,因此文字大約會大三分之一。

為什麼複製的 Base64 字串無法解碼?

通常是複製時遺失或多出了一個字元,例如換行位置錯誤,或少了最後一個字元。請從來源重新複製。

借助 AI 協助,由英文原文翻譯而成。

留言

    還沒有留言,搶先留言吧。

    您的評分(選填)

    您的電子郵件不會顯示,也不會被保存。

    How to Remain Valuable When Intelligence Becomes Cheap 的封面How to Remain Valuable When Intelligence Becomes Cheap

    224 頁,探討當 AI 能處理多數認知工作時,人類、經濟與策略上仍然稀缺的優勢。

    $3.84在 Gumroad 購買英文版