Base100 編碼會將 UTF-8 文字的每個位元組轉換成單一 emoji 範圍的 Unicode 符號,把位元組值 0 到 255 對應到 U+1F3F7 到 U+1F4F6 的碼點。在 iPhone 上執行相當簡單,因為 Base100 編碼 / 解碼工具 完全在 Safari 內運作,在本地處理輸入,且絕不上傳文字。在 Mobile Safari 中開啟該頁面,選擇 Text to Base100 方向,輸入或貼上你的訊息,然後點選 Encode 即可取得一串可複製到剪貼簿的符號。只要複製過程中沒有夾帶變體選擇符、空格、換行或超出範圍的字元,同一頁面也接受貼上的 Base100 符號並將其解碼回文字。由於 Base100 處理的是 UTF-8 位元組而非視覺字元,一般英文文字會產生每個字母一個符號,而帶有變音符號的字元、CJK 字元與 emoji 則會依其 UTF-8 表示法展開為多個符號。該頁面強制設定 500,000 位元組或 500,000 符號的上限,以免一次意外貼上過大內容導致 Safari 凍結。所有編碼與解碼都在瀏覽器中進行,這意味著只要頁面已載入,即使訊號微弱或完全沒有訊號,也能執行轉換。

Base100 如何將位元組對應到 Emoji 符號
對應規則是對輸入的每個位元組套用一個簡單的算術步驟。工具首先將輸入的文字轉成 UTF-8 位元組,然後將位元組值加上常數碼點 U+1F3F7。值為零的位元組會變成 U+1F3F7,值為一的位元組會變成 U+1F3F8,依此類推,到位元組 255 變成 U+1F4F6,構成一個含頭含尾的 256 符號範圍。符號之間沒有填補字元、檢查碼、長度前綴,也沒有分隔符,因此解碼器必須透過計算碼點數量來讀取串流,而不是掃描空白字元。
你可以手動驗證其中一個步驟。ASCII 字母 H 的位元組是十進位 72。將 72 加上偏移值 127991 得到十進位 128063,也就是 U+1F43F。在 iPhone 上開啟 Base100 編碼 / 解碼工具,輸入單一字母 H,點選 Encode,產生的符號串流就會以那個單一符號開頭。由於規則是對稱的,該符號可以反向減回位元組 72,而嚴格的 UTF-8 解碼器會將 72 讀成 ASCII 字元 H。正是這種「一個位元組對應一個符號」的特性,讓 Base100 非常容易以視覺方式檢查:輸出中的每個符號正好對應原始輸入的一個位元組。
如何在 iPhone 的 Safari 中進行 Base100 編碼
- 在 iPhone 上開啟 Safari 並載入 Base100 編碼 / 解碼工具頁面。該工具只需頁面載入一次,之後因為轉換是在瀏覽器內執行,所以即使沒有網路連線也能運作。
- 點選 Text to Base100 方向,啟用編碼模式而非解碼模式。
- 點選輸入區域內部,使用 iOS 鍵盤輸入,或使用標準的貼上指令從其他 App 貼上內容。
- 點選 Encode。頁面會將輸入轉成 UTF-8 位元組,並為每個位元組輸出一個符號,立即顯示在下方。
- 點選 Copy,將精確的符號串流放到 iPhone 剪貼簿,然後貼到訊息、郵件、備忘錄,或任何接受 emoji 輸入的 App 中。
- 若稍後要解碼,請重新開啟同一頁面,切換到 Base100 to text,貼上未經修改的符號串流,然後點選 Decode。如果串流在整個來回過程中保持原樣,就會還原成原始文字。
整個流程使用的是標準 iOS 分享與貼上機制,因此不需要從 App Store 安裝任何東西,也不需要建立帳號。如果你想要並排參考位元組與符號的對應表,Base100 編碼速查表:位元組、Emoji 與解碼 以可列印的形式整理了相同的規則。
在 iPhone 上安全地複製符號串流
這個對應是位元組等級精確的,因此任何改變單一碼點的動作都會改變解碼後文字中的單一位元組。iOS App、鍵盤以及複製貼上流程可能會悄悄地在碼點旁邊插入變體選擇符(例如 U+FE0F),使其呈現為彩色 emoji 而非單色字形。該選擇符不屬於 Base100 字母集,嚴格的解碼器會將其拒絕。訊息、郵件以及部分第三方鍵盤也可能會在過長的複製內容中插入它們自己的格式字元,或在特定寬度下以隱含換行切開串流。這些插入的字元都不允許出現在有效的 Base100 字串中。
為了保持複製內容的乾淨,請將符號串流貼到純文字欄位(例如處於未格式化模式的「備忘錄」),或使用能顯示精確位元組的 iPhone 剪貼簿檢視器。如果解碼器回報某個字元被拒絕,請捲動到該位置,並移除變體選擇符、誤入的空格或插入的標點符號。最快的確認方式是做一次來回測試:編碼、將輸出貼回解碼器,然後確認是否成功還原為原始文字。如果一個外觀相似的貼上內容仍然失敗,原因幾乎一定是這些看不見的插入字元之一,而非對應規則本身有瑕疵。
其他適用於 iPhone 的編碼方式與使用時機
Base100 是在 iPhone 上以瀏覽器工具形式提供的多種位元組編碼之一。每種方式在可讀性、密度與傳輸相容性上各有取捨,因此選對方式很重要。
| 編碼方式 | 輸出字母集 | ASCII 安全傳輸 | UTF-8 文字友善 | 每個位元組一個符號 |
|---|---|---|---|---|
| Base16 (十六進位) | 0-9, A-F | 是 | 是 | 每個位元組兩個符號 |
| Base32 | A-Z, 2-7,含填補字元 | 是 | 是 | 每個位元組約 1.6 個符號 |
| Base58 | Bitcoin 字母集 | 是 | 是 | 每個位元組超過一個符號 |
| Base64 | A-Z、a-z、0-9、+、/ | 是 | 是 | 每個位元組約 1.33 個符號 |
| Base100 | U+1F3F7 到 U+1F4F6 | 否(emoji 範圍) | 是 | 每個位元組正好一個符號 |
Base100 的特色在於其輸出為每個輸入位元組一個符號,且這些符號在視覺上明顯屬於 emoji 範圍的碼點。其權衡在於輸出完全不是 ASCII,因此任何會去除或替換非 BMP emoji 的目的地都可能會破壞該串流。若需要 ASCII 專用的傳輸,可依目的地所預期的字母集,選擇 Base64 編碼 / 解碼、Base32 編碼 / 解碼,或 Base58 編碼 / 解碼。
iPhone Safari 上的限制與失敗模式
該頁面設有嚴格的限制,以保持 Mobile Safari 在記憶體有限的裝置上仍能順暢運作。任一方向最多接受 500,000 位元組或 500,000 符號,且會拒絕空白的輸入。解碼採用嚴格的 UTF-8 驗證,因此若串流的位元組不是有效的 UTF-8 序列,會回傳錯誤,而不是把錯誤的位元組替換成 U+FFFD。這種嚴格的行為能在早期就抓到意外的貼上損壞,而不是產生悄悄出現的亂碼文字。
| iPhone 上的症狀 | 可能原因 | 修正方式 |
|---|---|---|
| 解碼器拒絕單一符號 | 插入了變體選擇符 U+FE0F | 移除選擇符或從編碼器重新複製 |
| 解碼器回報無效的 UTF-8 | 複製過程中加入了空格或換行 | 透過純文字欄位重新複製 |
| 輸出顯示為方框或空白 | 字型缺少上層 emoji 範圍 | 使用搭載 Apple Color Emoji 的較新版 iOS |
| 工具顯示輸入過大 | 超過 500,000 位元組或符號上限 | 切割輸入或使用較小的測試訊息 |
如果頁面在較舊的 iPhone 上感覺緩慢,請重新載入,強制 Safari 清除快取版本,並先嘗試較小的測試訊息。500,000 上限同時適用於兩個方向,設立的目的正是為了避免一次意外貼上過大的內容而鎖死瀏覽器分頁。
Base100 是編碼,不是加密
位元組與符號之間的對應是完全可逆的,原始的 Adam Niederer Base100 專案以公開形式公布了其公式。任何知道偏移常數 U+1F3F7 的人,都能將任何串流解碼回其 UTF-8 位元組,進而還原為原始文字。Base100 也缺少檢查碼,因此語法上合法的單一符號變更無法被偵測。若需要保密性與防竄改偵測,請使用經審核的加密與認證格式,例如 線上 AES 加密 或 HMAC 產生器。對於日常任務(例如把訊息打包成 emoji 符號以便在聊天中傳送、為測試資料加上標記以便在記錄中突顯,或產生一個「一個符號對應一個位元組」的 UTF-8 展開示範),在 iPhone 上使用 Base100 是個精簡的本地端解決方案,除了 Safari 本身之外不需要安裝任何東西。
若想深入了解,請參閱 在 Mac 上以 Safari 進行 Base100 編碼:無需安裝即可執行。