Gzcompress 線上作業,是把可讀的 UTF-8 文字,經過驅動 gzip 的同一套 DEFLATE 演算法,產出可嵌入任何接受文字之處的精簡二進位串流。在瀏覽器裡的標準做法是壓縮輸入,把得到的 RFC 1952 gzip 位元組用標準帶填充的 Base64 包裝,再讓接收端把該 Base64 解回位元組後再展開。 Gzip 壓縮與解壓縮 工具正是走這條管線:把你的文字轉成嚴格 UTF-8、以 DEFLATE 壓縮、前置 gzip 標頭與結尾、把位元組編成 Base64;反向路徑則驗證 Base64、剝掉包裝,再把串流展開回 UTF-8 文字,且不做靜默替換。
多數讀者是帶著 PHP 背景來到本頁。在 PHP 裡,內建的 gzcompress 函式回傳的是原始 DEFLATE 資料——沒有 gzip 標頭、也沒有校驗和包裝。這個差異很重要,因為許多語言與函式庫預期的是完整 RFC 1952 格式,包含魔術數字 1f 8b、方法位元組 08、時間戳記,以及 CRC32 結尾。當你想把壓縮結果分享給 Python gzip 模組、Node zlib.gunzip 呼叫、Go compress/gzip 讀取器,或瀏覽器端的 DecompressionStream 時,通常需要完整 gzip 容器,而不是 PHP 的 gzcompress 產出的裸 DEFLATE 區塊。這就是為什麼以 RFC 1952 為目標的瀏覽器工具,會是 gzcompress 線上作業最普遍相容的選擇。

Gzcompress 線上工具實際產出什麼
當你請工具執行 gzcompress 線上作業時,會依序發生三件事。首先,輸入字串會編碼成 UTF-8,讓表情符號與帶音調字元能完整往返。其次,這些位元組會送進 DEFLATE 壓縮器,工具再依 RFC 1952 所述,用十位元組 gzip 標頭與八位元組結尾加以包裝。第三,得到的位元組序列會呈現為標準帶填充的 Base64,讓整段壓縮資料能貼進 JSON、資料庫欄位、HTTP 標頭或設定檔,而無須擔心跳脫。
回程時,解碼器會反轉這條管線:剖析 Base64、檢查 gzip 魔術位元組、相對未壓縮資料核對 CRC32 與長度結尾、解壓縮 DEFLATE 資料,最後把結果位元組嚴格解讀為 UTF-8。任何無效序列都會產生明確錯誤,而不是某些函式庫會靜默套用的問號替換。
為什麼瀏覽器工具最適合
純 JavaScript 實作對這項工作有實際優點。不必把任何東西上傳到伺服器,當文字含有日誌、設定片段或不想離開工作站的樣本資料時,這一點很重要。壓縮跑在與頁面相同的執行緒上,因此沒有佇列、也沒有速率限制,而且輸出可重現——相同輸入每次執行都會產出相同的 Base64 字串,這在跨機器比對結果或固定測試夾具時很有幫助。
| 容器 | 魔術位元組 | 典型接收端 |
|---|
這張表說明了為什麼選對容器等於完成一半工作。預期 gzip 格式的接收端會拒絕原始 DEFLATE 區塊;預期原始 DEFLATE 的系統也會拒絕已包裝的串流,即使兩者都是同一演算法產出的。
在瀏覽器中壓縮與解碼文字
- 開啟 Gzip 壓縮與解壓縮 工具,並選擇 UTF-8 轉 gzip Base64 方向。
- 貼上或輸入你想縮小的文字。請維持在頁面標示的大小內;過大的貼上內容可能超出行動裝置的可用記憶體。
- 點選壓縮,等待 Base64 輸出呈現。結果應一律以 H4sI 開頭,因為那是 gzip 魔術位元組 1F 8B 08 的 Base64 編碼。
- 複製完整帶填充的 Base64,若有結尾的 = 符號也要一併帶上。哪怕截掉一個字元,對端解碼就會失敗。
- 若要反向操作,把工具切到 gzip Base64 轉 UTF-8 方向,並貼上標準 Base64 字串。
- 點選解壓縮,確認還原後的文字與原文逐字相符,包含任何帶音調字母或表情符號。
若步驟 6 產出的是錯誤而非文字,最常見原因是少了或多了一個 = 填充符號、複製貼上帶入了內部空白,或資料被 Base64 編碼了兩次。先重新檢查原始字串,再假設壓縮資料已損壞。
Gzcompress 線上工具的常見情境
開發者會在幾種反覆出現的情況動用 gzcompress 線上工具。其一是在沒有原生壓縮的文字欄裡儲存大型 JSON 資料前先縮小體積,Base64 包裝能撐過 VARCHAR 限制且無須任何跳脫。其二是在拉取請求中分享測試夾具資料:一份 200 KB 的 JSON 檔經 gzip 後常會縮到 30 KB 以下,得到的 Base64 在程式碼審查裡放得下。其三是為已經原生支援 gzip 的系統準備資料,例如帶 Content-Encoding: gzip 的 HTTP 請求本文,你想在送出前確認資料能解壓成預期文字。
另一種情境是要離開 PHP 的 gzcompress 輸出,因為接收服務預期的是完整 RFC 1952 串流。若你手上有 PHP 產出的 base64 編碼 blob,而下游系統一直拒絕它,修正方式往往是用正確的 gzip 包裝重新編碼,而不是原始 DEFLATE 區塊。情況需要時,也可以用本站的相關工具——例如 Base64 解碼解說 更深入說明標準編碼規則,而 Base64 編碼/解碼 工具則處理輸入根本不是 gzip、只是仍需 Base64 包裝的純 UTF-8 文字。
何時不該用 Gzcompress 線上工具
壓縮只在輸入有冗餘時才有幫助。已經壓縮過的檔案——JPEG 圖片、MP4 影片、ZIP 封存、加密密文——再跑 gzip 通常會多出幾個位元組,因為 DEFLATE 演算法找不到重複模式,卻仍必須加上標頭與結尾。若你需要嵌入二進位檔,請用專為該用途設計的工具,而不是 UTF-8 gzip 管線;見 檔案轉 Base64 轉換器 ,作為較合適的路徑。
在鎖定格式前,也值得先核對接收端的預期。有些 API 要的是未經編碼的原始 gzip 位元組,此時必須在用戶端剝掉 Base64 包裝。有些則預期 zlib 串流,其標頭是 78 xx 而非 1F 8B。送錯容器是「gzcompress 線上」整合第一次就失敗的最常見原因之一,所以貼進正式環境前請先確認規格。
驗證輸出
壓縮後的快速健全檢查,是看 Base64 的前幾個字元。使用預設 DEFLATE 壓縮方法的 RFC 1952 gzip 串流,以 Base64 包裝時一律以 H4sI 開頭,因為那是位元組 1F 8B 08 的固定編碼。若輸出以別的內容開頭,工具可能寫出了原始 DEFLATE、zlib 串流,或完全不同的東西。解碼後再用同一工具重新編碼,應得到完全相同的 Base64 字串——這項性質可用作 CI 管線或迴歸指令稿的往返測試。
若要較長期儲存,請把 Base64 連同填充一併保存,除非接收系統明確要求,否則避免換行。多數 gzip 解碼器能處理有換行的 Base64,但結尾少一個 = 符號就足以讓解壓縮因長度檢查錯誤而失敗。若你必須經由會不可預期地剝掉空白的通道傳送這些位元組,較安全的做法是先把字串壓平,再在對端用專用的 Base64 工具。
把以上串起來
Gzcompress 線上作業若做對,就是一個三步驟迴圈:選對容器、把結果包裝到能撐過複製貼上,並在依賴它之前驗證往返。 Gzip 壓縮與解壓縮 工具讓這個迴圈保持精短——貼上文字、複製 Base64、送出——整條管線在本機執行,因此不會外洩。需要處理二進位資料、解碼外部資料,或抽查其他語言的輸出時,再搭配本站的 Base64 與檔案編碼工具,你就有一套完整工作流程,能產出與消耗 gzip 文字,而不必安裝任何函式庫。
相關閱讀: 將十六進位檔案無誤轉成可讀文字。
相關閱讀: Base100 編碼器:線上把文字轉成表情符號。