Base64 格式化

混乱 Base64 输入
0 字元

免費線上格式化 Base64 字串,支援自訂字元寬度(64/76/80/100 字元)和縮排(0/2/4 空格)分行顯示,適合長串閱讀、截圖對比和文件排版。僅修改顯示格式,不更動原始 Base64 編碼資料。

相關推薦

什麼是 Base64 格式化?

Base64 格式化是在顯示層面將一長串 Base64 字串按指定字元寬度(如 64/76/80/100)拆成多行展示,並支援按 0/2/4 空格縮排。格式化的結果在視覺上更易讀、更適合截圖、列印和文件排版,但**不改變原始位元組內容**——去除所有換行和縮排即可還原為原始單行 Base64。

**為什麼需要格式化?** RFC 4648 標準 Base64 沒有強制換行,但實際使用中:①長 Base64 字串在工單系統、聊天工具、Markdown 文件中容易溢出導致橫向捲動;②MIME 協定(RFC 2045)規定每 76 字元折行(用於郵件附件);③程式碼審查時多行展示更容易定位異常字元;④文件截圖排版需要美觀的對齊。

**常見使用場景:** ①技術文件排版:在 Markdown / Confluence / Notion 中嵌入長 Base64;②截圖對比:在 PR / Bug 報告截圖中方便團隊查看完整 Base64 字串;③人工審查:在 Code Review 中快速定位非法字元(如換行、空格混入);④郵件附件:按 MIME 標準 76 字元折行後方便 SMTP 傳輸;⑤大屏日誌展示:在監控大屏上按多行顯示便於查看。

**與 MIME Base64 的區別:** MIME Base64(RFC 2045)固定每 76 字元折行,是協定級強制要求。本工具的格式化更靈活,支援 64/76/80/100 字元多種寬度 + 縮排 0/2/4 空格,適合各種文件場景。MIME 折行可透過選擇 76 字元寬度重現。

**格式化的安全性:** 工具僅在顯示層面插入換行和縮排字元,**絕不修改原始 Base64 的位元組內容**。格式化結果去除所有空白字元後可還原為完全相同的原始 Base64 字串。解碼時大多數 Base64 解碼器會自動忽略空白字元,所以格式化結果可直接解碼使用。

適用場景

  • 將超長 Base64 字串按自訂寬度分行便於閱讀和截圖
  • 格式化 Base64 用於技術文件、工單記錄或郵件展示
  • 列印或歸檔時的 Base64 排版最佳化
  • 配合拆分、合併工具進行 Base64 結構調整
  • 按 MIME 標準(76 字元)折行 Base64 用於郵件附件
  • 程式碼審查時多行展示 Base64 便於定位異常字元
  • 將 Base64 嵌入 Markdown 時按 4 空格縮排保持程式碼風格
  • 大屏日誌展示:監控系統中多行顯示長 Base64 payload

使用方法

  1. 貼上需要格式化的 Base64 字串(可含或不含換行)
  2. 選擇每行字元寬度:64 / 76 / 80 / 100
  3. 選擇縮排:0 / 2 / 4 空格
  4. 工具即時按指定寬度和縮排格式化展示
  5. 複製格式化結果用於文件,或點擊還原去除換行

功能特點

  • 自訂字元寬度:支援 64 / 76 / 80 / 100 字元每行,靈活適配不同排版需求
  • 可設定縮排:支援 0 / 2 / 4 空格縮排,便於在程式碼區塊或 Markdown 中對齊
  • 純展示最佳化:僅調整顯示方式,不改變原始 Base64 編碼資料
  • 即時格式化:200ms 防抖,輸入即格式化,無延遲
  • 一鍵還原:去除所有換行和縮排,恢復為單行 Base64
  • 字元和行數統計:即時顯示輸入字元數、輸出總行數
  • 一鍵複製:格式化結果可直接複製到剪貼簿,用於文件或工單記錄
  • 瀏覽器本地零上傳:所有格式化在瀏覽器內完成,不經過任何伺服器

程式碼範例

JavaScript:手動實作 Base64 格式化(理解原理)

javascript

理解 Base64 格式化的底層邏輯——按字元寬度切分並插入換行符。

// Base64 格式化函式(與本工具邏輯一致)
function formatBase64(input, lineLength = 76, indent = 0) {
  // 1. 去除所有空白字元
  const clean = input.replace(/\s/g, '');
  if (!clean) return '';

  // 2. 按指定寬度切分
  const lines = [];
  for (let i = 0; i < clean.length; i += lineLength) {
    const line = clean.slice(i, i + lineLength);
    lines.push(' '.repeat(indent) + line);
  }

  // 3. 用換行符連接
  return lines.join('\n');
}

// 使用範例
const b64 = 'a'.repeat(200);
console.log(formatBase64(b64, 76, 0));
// 輸出:每行 76 字元的 Base64

// 去格式化(用於解碼或傳輸)
function unformatBase64(input) {
  return input.replace(/\s/g, '');
}

console.log(unformatBase64(formatBase64(b64, 76, 0)).length); // 200

Python:Base64 格式化 + MIME 折行

python

Python 實作按 76 字元折行(MIME 標準)並可指定縮排。

import textwrap

def format_base64(b64_str: str, width: int = 76, indent: int = 0) -> str:
    """格式化 Base64 字串為多行"""
    # 去除所有空白
    clean = ''.join(b64_str.split())
    if not clean:
        return ''

    # 使用 textwrap 按寬度切分
    lines = textwrap.wrap(clean, width=width)

    # 加入縮排
    if indent > 0:
        lines = [' ' * indent + line for line in lines]

    return '\n'.join(lines)


# 使用範例
b64 = 'aGVsbG8gd29ybGQ=' * 10
print(format_base64(b64, 76, 0))

# 重現 MIME Base64 (RFC 2045)
mime_format = format_base64(b64, 76)
print(f'MIME Base64 行數: {len(mime_format.splitlines())}')

# 還原為單行
single_line = b64.replace('\n', '').replace(' ', '')
print(f'單行長度: {len(single_line)}')

命令列:fold 工具 + MIME Base64 折行

bash

Linux/macOS 系統內建的 fold 工具可在命令列快速實作 Base64 格式化。

# 1. 輸入 Base64 → 按 76 字元折行(MIME 標準)
echo "aGVsbG8gd29ybGQ=" | base64 | base64 | fold -w 76

# 2. 格式化長 Base64 檔案 → 輸出到新檔案
fold -w 76 encoded.txt > formatted.txt

# 3. 按 64 字元折行(緊湊展示)
fold -w 64 encoded.txt > compact.txt

# 4. 同時去除所有換行(去格式化)
tr -d '\n' < formatted.txt > single-line.txt

# 5. 驗證:Base64 長度 + 行數
wc -c encoded.txt | awk '{print "字元數:", $1}'
wc -l formatted.txt | awk '{print "行數:", $1}'

# 6. 結合 openssl 實作完整 base64 編碼 + 格式化
echo "Hello 世界" | openssl base64 -A | fold -w 76 > hello.b64.txt
cat hello.b64.txt

常見問題

格式化會改變 Base64 的實際內容嗎?

不會。格式化僅在顯示層面插入換行符和縮排空格,不改變編碼本身。將格式化後的內容去掉所有空白字元即可還原為原始單行 Base64。所有 Base64 解碼器(瀏覽器原生 atob / Node.js Buffer / Python base64)都會自動忽略空白字元,所以格式化結果可直接用於解碼。

Base64 格式化和 MIME Base64 有什麼區別?

MIME Base64 嚴格按 RFC 2045 的 76 字元寬度折行,是郵件附件傳輸的標準。本工具的格式化更靈活,允許自訂 64/76/80/100 字元寬度 + 縮排 0/2/4 空格,更適合文件、截圖等不同展示需求。選擇 76 字元寬度即可重現 MIME 折行。

適合日誌查看和工單記錄嗎?

非常適合。長 Base64 字串在工單系統(Jira / Zendesk)、聊天工具(Slack / Teams)或 Markdown 文件中容易溢出導致橫向捲動。格式化後多行展示清晰易讀,可直接貼到工單附件或聊天視窗。

格式化後可以直接用於解碼嗎?

可以。所有主流 Base64 解碼器都會自動忽略換行和空格。如果遇到問題(如舊版 OpenSSL),可先點擊「還原」按鈕去除換行再解碼。

為什麼有 64 / 76 / 80 / 100 多種字元寬度?

64 字元適合緊湊文件(如 CLI 終端、Markdown 表格);76 字元是 MIME 郵件標準;80 字元是傳統終端寬度;100 字元適合寬螢幕編輯器和現代文件。每種寬度有對應的最佳使用場景。

縮排有什麼用?

縮排(0/2/4 空格)讓 Base64 在程式碼區塊或 Markdown 中保持對齊:0 空格適合純文字,2 空格適合 JS/Python 程式碼風格,4 空格適合 Markdown 巢狀程式碼區塊。

格式化會增加 Base64 的字元數嗎?

會增加約 1-3%(換行符 + 縮排空格),但不影響解碼結果。如果傳輸對大小敏感(如 URL 參數),建議先用「還原」功能恢復為單行。

支援 UTF-8 / 中文嗎?

本工具不直接處理字元集——只格式化 Base64 字串本身。如果 Base64 中包含中文(如經過 UTF-8 編碼後再編碼的 Base64),格式化不會影響其編碼正確性。

適合大檔案格式化嗎?

支援。工具即時格式化,瀏覽器對 1MB 以內的 Base64 字串無壓力。超過 10MB 可能導致介面卡頓,建議分塊格式化。

格式化後體積變大,可以壓縮嗎?

格式化增加的只是換行和縮排,對壓縮演算法友善。可用 gzip / Brotli 壓縮,或用 Base64 Stats 工具查看具體增量。

故障排查

格式化後某些 Base64 字元遺失

可能來源 Base64 包含非法字元(如換行符未正確處理)。先用 Base64 Clean 工具清洗後再格式化。

格式化結果與原始位元組不一致

這是不可能的——格式化僅插入空白字元,不修改位元組內容。如果發現不一致,說明來源 Base64 已被錯誤處理(如重複格式化導致空白重複插入)。

長字串格式化後介面卡頓

超過 10MB 的 Base64 字串可能導致瀏覽器卡頓。建議:①分塊處理;②先用 base64-clean 去除多餘空白;③減小寬度(如 64 字元)減少每行渲染負擔。

術語表

Base64 格式化
在顯示層面將 Base64 字串按指定寬度拆成多行,僅影響視覺呈現,不改變編碼本身。
MIME Base64
RFC 2045 規定的每 76 字元折行的 Base64 變體,主要用於電子郵件附件傳輸。
字元寬度 (line length)
每行顯示的 Base64 字元數。常用值:64(緊湊)、76(MIME 標準)、80(標準列印)、100(寬螢幕)。
縮排 (indent)
每行行首的空格數,常見值:0(無縮排)、2(程式碼風格)、4(Markdown 程式碼區塊)。
空白字元 (whitespace)
Base64 字串中可能存在的空格、Tab、換行符等。格式化會先去除這些字元,再按指定寬度重新插入。
去格式化 (unformat)
將格式化(多行 + 縮排)的 Base64 還原為單行無空白的形式,用於解碼或傳輸。

4 種字元寬度對比表

不同字元寬度適合不同展示場景,可根據目標環境選擇。

字元寬度典型場景對應標準範例
64 字元CLI 終端、Markdown 表格緊湊展示小螢幕 / 高密度
76 字元郵件附件傳輸RFC 2045 MIME郵件 / SMTP
80 字元傳統終端列印傳統 Unix 終端文件列印
100 字元現代編輯器 / 寬螢幕現代 UI 規範IDE / 文件

3 種縮排風格對比表

不同縮排風格匹配不同程式碼規範,按團隊/專案習慣選擇。

縮排程式碼風格範例(Base64 第 1 行)
0 空格無縮排(純文字)QUJD...
2 空格JS / Python 規範 QUJD...
4 空格Markdown 巢狀 / Java 規範 QUJD...

Authoritative References