免費轉換器

Base64 編碼器 / 解碼器

在瀏覽器中即時將文字或檔案編碼為Base64,或解碼Base64字串。免費、私密,無需上傳。

關於此工具

Base64 是一種編碼方案,使用 64 個可列印字元將二進位資料表示為 ASCII 文字:A-Z、a-z、0-9、加號 (+) 和斜線 (/),並使用等號 (=) 進行填入。該格式最初旨在使二進位附件能夠在 7 位元乾淨的電子郵件傳輸中倖存,但如今已擴展到數十種用途:HTML 中的資料 URL、包含圖像資料的 JSON、JWT 有效負載、基本身份驗證標頭以及任何需要攜帶位元組的基於文字的協定。

編碼需要 3 個位元組的輸入並產生 4 個 ASCII 字元的輸出。因此,輸出比輸入長 33%,這是將二進位轉換為文字安全格式的成本。解碼正好反轉該過程,從編碼文字中恢復原始位元組。

此工具可處理兩個方向。編碼模式採用文字輸入(或透過上傳的二進位)並產生 Base64 文字。解碼模式採用 Base64 文字並產生原始文字或可下載的二進位。令牌和識別碼支援 URL 安全變體(使用 - 和 _ 代替 + 和 /)。

為什麼要使用 Base64

Base64 是在純文字上下文中嵌入二進位資料的標準方法。 HTML 中的內嵌圖像使用資料 URL(data:image/png;base64,...),因此小圖示可以隨頁面一起提供,無需單獨的請求。攜帶圖像、憑證或簽署的 JSON 有效負載將它們編碼為 base64 字串。 JWT 令牌是三個以點分隔的 Base64 編碼段。

Base64 也規範了錯誤處理 8 位元二進位的協定的字元處理。驗證標頭(基本驗證使用 Base64)、電子郵件附件、包含金鑰的設定檔以及許多 API 都需要 Base64,因為二進位檔案無法可靠地通過其管道。

使用方法

貼上數據,選擇方向。

  1. 選擇編碼或解碼: 編碼從二進位或文字輸入產生 Base64 文字。解碼則反轉該過程。
  2. 新增輸入: 對於編碼,貼上文字或上傳二進位檔案。要進行解碼,請貼上 Base64 文字。該工具自動偵測 URL 安全變體。
  3. 轉換: 瀏覽器使用 btoa 進行編碼,使用 atob 解碼(對非 ASCII 文字使用 UTF-8 處理)。輸出是精確且確定的。
  4. 複製或下載: 編碼文字可以嵌入 URL、JSON、HTML 資料 URL 或任何基於文字的協定中。將二進位下載解碼為文件,並根據偵測到的文件類型猜測適當的副檔名。

常見用例

技術細節

Base64 將每 6 位元輸入對應到 64 個輸出字元之一。三個輸入位元組(24 位元)產生四個輸出字元。當輸入長度不是 3 的倍數時,編碼器會附加一到兩個等號以將輸出填滿為 4 個字元的倍數。

URL 安全的 base64(在 RFC 4648 第 5 節中定義)將 + 替換為 - 並將 / 替換為 _,以產生可在 URL 和檔案名稱中安全使用的字串,而無需進一步轉義。在 URL 安全性上下文中,填充等號有時會被省略;解碼器通常接受這兩種形式。

JavaScript 的 btoa 和 atob 直接處理 ASCII,但無法處理非 ASCII 字串。對於 UTF-8 文本,轉換器使用 TextEncoder/TextDecoder 在文字和二進位之間進行轉換,然後對二進位進行 Base64 編碼。這可以正確處理表情符號、重音字元和非拉丁腳本。

最佳實踐

常見問題

Base64 編碼有什麼用?
Base64 將二進位資料轉換為 ASCII 文字。常見用途包括在 HTML(資料 URI)中嵌入圖像、對電子郵件附件進行編碼、在 JSON API 中傳輸二進位資料以及在基於文字的資料庫中儲存二進位 blob。
Base64 編碼會加密我的資料嗎?
不。 Base64 是一種編碼,而不是加密。任何人都可以解碼 Base64 字串。它是為安全資料傳輸而不是安全而設計的。對敏感資料使用實際加密(AES、RSA)。
為什麼 Base64 會增加檔案大小?
Base64 將每 3 個位元組的輸入表示為 4 個 ASCII 字符,導致大小增加約 33%。這是能夠安全地將二進位資料嵌入文字格式的權衡。
我可以將圖像編碼為 Base64 嗎?
是的。上傳圖片文件,該工具將生成一個 Base64 字串,您可以將其用作 HTML 或 CSS 中的資料 URI (data:image/png;base64,...)。
JWT 令牌是 base64 嗎?
是的 — JWT 由三個以點分隔的 base64url 編碼段組成。第一個是標頭,第二個是有效負載,第三個是簽名。
我的數據是否上傳到伺服器?
不會。編碼和解碼在瀏覽器中使用 btoa、atob、TextEncoder 和 TextDecoder 進行。
最大尺寸是多少?
最大 50 MB。瀏覽器記憶體限制了非常大的輸入的實際大小。
為什麼我的解碼輸出看起來像垃圾?
來源很可能是二進制的,而不是文字。切換到文件下載模式以取得二進位文件,或檢查輸入是否實際上是 Base64 編碼的文字而不是二進位檔案。