Gzcompress online on iPhone 是完全在 iOS 瀏覽器內運作的 gzip 壓縮功能——你的文字會先編碼成 UTF-8 位元組,再由 WHATWG Compression Streams API 包裝成 RFC 1952 gzip 串流,最後回傳為標準且帶填補字元的 Base64,你可以直接貼到任何文字欄位、聊天視窗或 JSON 酬載中。無需安裝應用程式、無需帳號、無需上傳到伺服器。瀏覽器本身負責建構 gzip 框——魔術位元組 1f 8b、壓縮方法 8 代表 DEFLATE、八位元組的小端序 CRC32 加上 ISIZE 結尾——然後把那些位元組以 Base64 形式交給你。反向操作也以同樣方式運作:貼上 Base64,工具會拒絕填補字元或字母表的錯誤,檢查 gzip 框,並在裝置本機還原原始的 UTF-8 文字。

「Gzcompress Online on iPhone」在實務上的意義
當大多數人搜尋「gzcompress online on iPhone」時,他們心裡通常有三種任務之一:想要壓縮一段文字(通常是 JSON、一段日誌片段,或一個小型 HTML 酬載),然後把壓縮結果貼到聊天視窗、API 請求或錯誤報告中;想要解壓縮別人傳給他們的一段貼上的 Base64 字串,以查看原始文字;或是想要測試一個應該要接受 gzip 酬載的伺服器或 webhook,卻不想安裝桌面工具。
在桌機上,你通常會用 php -r "echo gzencode($s);"、gzip 殼層指令,或呼叫 zlib.gzip 的 Node 腳本。但在 iPhone 上這些都不存在——Safari 裡沒有 php CLI、沒有終端機應用程式,也沒有可以啟動來把位元組導入 gzip 的殼層。你擁有的是一個 JavaScript 執行環境,每個現代 WebKit 版本都內建 WHATWG Compression Streams API。Gzip Compress & Decompress 頁面會連結到那個執行環境,請瀏覽器把你的 UTF-8 位元組包裝成符合標準的 gzip 串流、把結果編碼為標準 Base64,並提供複製按鈕——全部都在裝置上完成。
Safari 為何能原生執行 Gzip 壓縮
根據 WHATWG Compression Streams 規範,瀏覽器端的 CompressionStream('gzip') 會產生一個以 gzip 魔術位元組 1f 8b 和壓縮方法位元組 8 開頭的串流,這正是 RFC 1952 所稱的「DEFLATE」。接著瀏覽器負責寫入選擇性的標頭欄位、壓縮後的 DEFLATE 區塊,以及包含未壓縮位元組之 CRC32 加上輸入大小 mod 2^32(ISIZE)的八位元組結尾。Safari 忠實地實作了這一切,而目前 iOS 版本所搭載的 Safari 在每個頁面上都開放使用此功能。
這對 iPhone 工作流程很重要,因為你收到的壓縮位元組並非某種私有的「iPhone 格式」。它們逐位元組就是 gzip。你可以拿工具給你的 Base64、解碼成原始位元組、以 .gz 副檔名存檔,然後在 macOS、Windows 或 Linux 上直接開啟該檔案,無需任何額外轉換。同一個工具在反向解碼時也會檢查同樣的不變量:嚴格的 RFC 4648 Base64 解碼(缺少填補字元、多餘的空白字元,以及無效的字母表字元都會失敗)、gzip 魔術位元組和方法位元組(確保串流確實是 RFC 1952,而不是 zlib、不是原始 DEFLATE,也不是其他容器),以及對解壓縮位元組的最後一次 UTF-8 驗證。如果任何步驟失敗,你會看到錯誤訊息,而不是悄悄出現半解碼的字串。
在 iPhone 上將 UTF-8 文字壓縮為 Gzip Base64 字串
如何在 iPhone 上將 UTF-8 文字壓縮成以 Base64 包裝的 gzip 串流:
- 在 iPhone 上開啟 Safari,並前往 /encoding/gzip-compress-decompress/。
- 在輸入文字區域中長按,直到出現放大鏡,然後放開以叫出動作選單;如果你的文字已在剪貼簿中,請選擇「貼上」。否則請點選該欄位並用螢幕鍵盤輸入。
- 確認模式已設為「UTF-8 text to gzip Base64」——這是預設方向。
- 點選「Compress」。Safari 會把你的字串編碼成 UTF-8 位元組、把那些位元組送進瀏覽器的 gzip 壓縮器,並在輸出區域中以帶填補字元的 Base64 形式呈現結果。
- 在輸出區域上長按、選擇「全選」,然後選擇「拷貝」,即可把完整且帶填補字元的 Base64 字串放進你的剪貼簿。輸出刻意不包含空白、不換行、沒有 data: 前綴,也沒有檔名——它是原始 gzip 位元組的標準 Base64。
- 把你的 Base64 貼到任何目的地預期接受的位置:聊天訊息、API 欄位、JSON 酬載,或你自己的筆記中。
非 ASCII 字元(任何超出純 ASCII 範圍的內容)在 UTF-8 中佔用超過一個位元組。一個表情符號、一個西里爾字母或一個中文字元可能是 2、3 或 4 個位元組,因此壓縮後的長度是根據你字串的位元組數計算,而不是螢幕上可見的字元數。如果接收端有嚴格的字元限制,請記住這一點。
在 iPhone 上將 Gzip Base64 字串解壓縮回 UTF-8
如何在 iPhone 上從以 Base64 包裝的 gzip 串流還原 UTF-8 文字:
- 在 Safari 中開啟 /encoding/gzip-compress-decompress/,並將模式切換為「Gzip Base64 to UTF-8」。
- 把你想解碼的 Base64 字串複製到你的 iPhone 剪貼簿。修剪掉聊天或應用程式可能加上的開頭或結尾空白,但保留結尾的 = 填補字元。
- 點選輸入區域內部、貼上 Base64,然後點選「Decompress」。
- 工具會嚴格地解碼 Base64、確認前兩個位元組是 gzip 魔術 1f 8b 且壓縮方法位元組為 8,接著把其餘部分交給 Safari 的 DecompressionStream。如果結尾的 CRC32 與未壓縮位元組不符,或輸入不完整、被截斷,你會看到錯誤訊息,而不是部分結果。
- 確認還原後的文字開頭是你預期的內容(JSON 大括號、一個已知的單字、一個可讀的句子)。如果解壓縮成功但輸出不是人類可讀的內容,幾乎可以確定原始酬載不是 UTF-8 文字——圖片、封存檔、可執行檔,以及舊式編碼的文件都可以乾淨地包進 gzip,但無法通過嚴格的 UTF-8 步驟。在這種情況下你需要的是二進位 gzip 工具,而不是 UTF-8 文字工作流程。
選擇正確的容器:原始 Gzip、Base64、Content-Encoding 或 .gz
在你把結果貼到任何地方之前,最常見的混淆來源是「gzip」可以透過四種不同的容器傳送。iPhone 瀏覽器工具只給你其中一種——以 Base64 包裝的 gzip 位元組——所以請確認那確實是接收端真正想要的格式。下表把每種容器對應到通常會用到的情境。
| 容器 | 它的樣子 | 典型的消費者 | 使用時機 |
|---|---|---|---|
| 原始 gzip 位元組 | 二進位檔案,以位元組 1f 8b 開頭 | gunzip、zlib、原生 gzip 程式庫 | 當你要儲存 .gz 檔案或把位元組導入原生 gzip 解碼器時 |
| Base64 gzip | ASCII 字母、數字、+、/,以 = 填補字元結尾 | JSON 欄位、聊天訊息、環境變數 | 當你需要把 gzip 酬載貼到只接受文字的地方時 |
| HTTP Content-Encoding: gzip | 請求或回應標頭加上原始 gzip 主體 | 瀏覽器、CDN、REST API | 當接收端伺服器使用 HTTP 層級壓縮時 |
| .gz 檔案 | 磁碟上帶有 gzip 副檔名的檔案 | tar -xzf、封存工具 | 當封存日誌、備份或靜態資產時 |
如果你的目的地預期的是其他三種格式之一,請解碼 Base64(例如使用 Base64 Encode / Decode 工具)、以 .gz 副檔名儲存結果,或把它包進正確的 HTTP 標頭中。在 iPhone 除錯時,送錯容器是伺服器拒絕 gzip 酬載最常見的原因。
iPhone 的限制與實用技巧
每當你在 Safari 上使用瀏覽器式的 gzip 工作流程時,有幾項 iPhone 特有的注意事項值得牢記。
- 工具會將輸入文字和解壓縮後的輸出上限設定為 5,000,000 位元組。貼上數 MB 的 JSON 區塊沒問題;貼上 200 MB 的日誌摘錄則會被乾淨地拒絕,而不是讓分頁卡住。
- 壓縮不是加密。產生的 Base64 是完全可逆的,因此不要把它當成隱藏憑證、權杖或個人資料的方式。
- gzip 結尾中的 CRC32 能偵測意外損壞。它並非抵禦攻擊者主動修改位元組的密碼學保證。
- 在同一台 iPhone 上對同一段文字進行兩次壓縮,不一定會產生相同的 Base64。瀏覽器內部的 DEFLATE 壓縮器在如何安排壓縮區塊以及寫入哪些選擇性標頭欄位上有自由度,即使來回內容保持不變,這也會改變原始位元組。請驗證框(魔術位元組、方法位元組、結尾的 CRC32 與 ISIZE)以及來回內容——而不是特定的 Base64 拼法。
- 切換模式或更換輸入會取消任何較舊、仍在進行中的任務,因此先前貼上所造成的緩慢解壓縮不會悄悄覆蓋較新的結果。
- 如果你還需要在 iPhone Safari 上將文字編碼成其他格式,同樣的純瀏覽器模式已整理在 Base100 encode on iPhone Safari guide 中,會逐步說明 iOS 動作選單在另一種編碼方式上的怪癖。
簡短來說:在 iPhone 上執行 gzcompress online 只需要一個分頁。開啟 Safari、把文字貼到 UTF-8 to gzip Base64 模式、複製帶填補字元的 Base64,再把它送到目的地預期接受文字友善 gzip 容器的地方。反過來,如果你需要從聊天中別人貼上的 gzip Base64 字串還原原始文字,切換模式、貼上酬載,然後直接從你的 iPhone 上讀取還原後的文字。
想深入了解,請參閱 Password Generator Alternative That Runs in Your Browser。