二進位對文字對照表是一份參考表,將每個 8 位元二進位值(從 00000000 到 11111111,或十進位的 0 到 255)與該位元組在嚴格以位元組方式解碼時所代表的字元配對。其中訣竅在於,「所代表的字元」只有在位元組序列遵循 UTF-8 編碼標準時,才能解析為單一可見字形,而且即便如此,仍只有部分字元能容納在一個位元組內。ASCII 的字母與數字對應一個位元組,繪製對照表相當容易;但帶有重音的字母(例如 é)佔用兩個位元組,歐元符號佔用三個,而大多數表情符號(例如 😀)則佔用四個。因此,一份可用的二進位對文字對照表必須聲明其分組規則(嚴格每個位元組 8 個位元,並以單一普通空格分隔)、目標編碼(WHATWG/Unicode UTF-8 標準,而非 7 位元 ASCII 或 Unicode 字碼點),以及位元組邊界處理方式(延續位元組絕不單獨存在)。這就是為什麼「文字轉二進位轉換器」將此對照表視為嚴格的 8 位元群組正規表示式,而非鬆散的「位元對字母」查找表。

二進位對文字對照表實際呈現的內容
典型的二進位對文字對照表以欄位方式排列:二進位位元組、十進位值、十六進位值,以及該位元組解析後對應的字元。讀者的任務通常是反向操作:查看像 01000001 這樣的二進位字串,並將其對應回「A」。對照表在此運作得很順暢,因為字母 A 對應的十進位值是 65,落在可容納於一個位元組的 ASCII 範圍內。當對照表聲稱能涵蓋「任何字元」時,問題便開始產生,因為任何 7 位元或單一位元組的參考資料都無法涵蓋 é、€ 或 😀。
對於 ASCII 文字,對照表相當直觀:01001000 = H、01100101 = e、01101100 = l、01101100 = l、01101111 = o —— 五個位元組對應五個字元。對於非 ASCII 文字,對照表則從「每列一個位元組」轉變為「每個字元佔用多個位元組」。兩位元組序列 11000011 10101001 是 é 的 UTF-8 編碼;三位元組序列 11100010 10000010 10101100 是 €;四位元組序列 11110000 10011111 10011000 10000000 是 😀。對照表讀者的工作同樣是把 8 位元群組對應回位元組,但解讀步驟從「此位元組即一字形」轉變為「此位元組可能是前導位元組、延續位元組或單位元組字元」。
為何單位元組對一字元的對照表具有誤導性
一旦脫離 ASCII 範圍,那些顯示「每個字母皆有專屬 8 位元代碼」的舊式對照表便具有誤導性。「二進位對文字」一詞暗示將位元轉換為字元,但實際上轉換過程會先經過位元組。僅列出單一 8 位元二進位數字的對照表,雖然能正確表示 256 個不同的字碼點,也能涵蓋基本拉丁字母、數字、常見標點符號以及少數控制字元,但卻無法涵蓋 é、€ 或 😀。任何依賴此類對照表「解碼」多位元組 UTF-8 序列的人,都會將延續位元組誤判為獨立字元,最終得到亂碼或替代符號。
錯誤並非出在對照表本身,而是其隱含的契約。「每個位元組對應一個字元」的預期僅在 ASCII 範圍內成立。超出此範圍後,WHATWG UTF-8 編碼標準為每個序列的第一個位元組定義了一組精確的模式:0xxxxxxx 表示單位元組字元、110xxxxx 表示雙位元組字元、1110xxxx 表示三位元組字元、11110xxx 表示四位元組字元。延續位元組則遵循 10xxxxxx 模式。這些前置位元模式本身即為二進位對文字對照表的一部分;忽略它們會使解碼淪為猜測。
將 8 位元位元組讀回文字
在格式正確、以單一空格分隔的 8 位元群組二進位字串中,將其解碼為文字的過程是確定性的。解碼器會讀取第一個群組,檢查其前置位元,並判斷其屬於單位元組字元、多位元組序列的前導位元組,或是延續位元組。TextDecoder 的 MDN 文件說明了嚴格的 UTF-8 驗證機制,這代表任何無效序列(例如缺少延續位元組的孤立前導位元組)會直接失敗,而不會被靜默替換。文字轉二進位轉換器 採用相同的規則。它會讀取嚴格符合正規表示式 [01]{8}( [01]{8})* 的群組,絕不修剪、填補或猜測長度錯誤的群組。
當位元組序列有效時,所產生的文字即為原始編碼所產生的內容 —— 不存在額外的解讀層。正是這種往返轉換的精確性,使嚴格的 8 位元二進位對文字對照表在通訊協定工作、原始碼分析及鑑識位元組檢查中相當實用。鬆散型、將「任意 8 位數字」解讀為字碼點的對照表,會對相同的位元組給出不同的結果,並破壞往返轉換的一致性。
常見字元範圍的位元組寬度參考
| 編碼寬度 | 前導位元組模式 | 延續位元組 | 範例字元 | 範例位元組 |
|---|---|---|---|---|
| 1 位元組 (ASCII) | 0xxxxxxx | 無 | A | 01000001 |
| 2 位元組 (拉丁擴充、希臘文) | 110xxxxx | 10xxxxxx | é | 11000011 10101001 |
| 3 位元組 (BMP 符號、貨幣) | 1110xxxx | 10xxxxxx ×2 | € | 11100010 10000010 10101100 |
| 4 位元組 (輔助平面、表情符號) | 11110xxx | 10xxxxxx ×3 | 😀 | 11110000 10011111 10011000 10000000 |
此表格是任何 UTF-8 二進位對文字對照表的結構骨架。第一欄告訴讀者每個邏輯字元包含多少個位元組群組;第二與第三欄定義這些群組在二進位中的樣貌;範例欄提供具體字元;最後一欄列出轉換器所產生的精確位元組群組。這些模式屬於 WHATWG UTF-8 編碼標準與 Unicode 標準中 UTF-8 一致性章節的一部分,並非任意約定。實務上的一點提醒:即便在 ASCII 範圍內,部分位元組值為控制字元(0x00–0x1F 及 0x7F),可能無法以可見形式列印。包含這些列的對照表依然正確;將這些位元組貼回解碼器的讀者,將會看到位元組所編碼的內容,包括換行字元、定位字元以及位元組 0x00 本身。
如何將文字轉二進位轉換器當作即時對照表使用
- 將轉換器切換至 UTF-8 二進位對文字 模式。
- 貼上以單一 ASCII 空格分隔的精確 8 位元群組 —— 例如 01001000 01100101 01101100 01101100 01101111。
- 選擇 轉換。工具會驗證正規表示式 [01]{8}( [01]{8})*,執行嚴格的 TextDecoder,並輸出 "Hello" 或顯示明確的錯誤訊息。
- 若需反向操作,請切換至 文字轉 UTF-8 二進位,輸入 Unicode 文字,然後選擇 轉換,即可看到每個位元組以 8 位數(含前置零)並以單一空格連接的形式輸出。
- 確認位元組數量符合預期的對照表項目,然後將結果複製到能精確保留普通空格的系統中。
編碼器透過符合標準的 TextEncoder 在瀏覽器中運作,並將每個位元組輸出為恰好 8 位數(含前置零)的二進位數字。解碼器採用嚴格的 UTF-8 驗證機制,因此當位元組序列在結構上分組正確但語意上錯誤 —— 例如缺少延續位元組的孤立前導位元組、過長形式、代理字元或超出範圍的序列 —— 將會顯示明確錯誤,而非被 Unicode 替代字元取代。雙向皆受相同的嚴格 8 位元分組規則約束,因此唯有兩端皆遵守該規則,往返轉換才能成功。
常見的對照表讀取錯誤
正確讀取二進位對文字對照表,需要與解碼器同等程度的細心。當有人嘗試以肉眼將 8 位元二進位對應回文字時,有三種錯誤反覆出現。
第一個錯誤是將每個 8 位元群組視為獨立字元。在嚴格的 UTF-8 中,兩個或更多相鄰的群組可能共同編碼單一字元。若將 é 編碼中的第一個群組(11000011)讀為一個字元,將會產生控制字元或替代字形;對照表讀者必須將其與下一個群組(10101001)合併,才能還原為 é。
第二個錯誤是刪除空格或在群組之間加入逗號。鬆散的過渡形式在肉眼看來仍像二進位,但嚴格的解碼器會將其拒絕。若對照表的一列從網頁複製到聊天軟體或文書處理器中,普通空格可能會被合併或插入換行。若換行後重新連接時遺漏了空格,即使每個群組仍為 8 位元,解碼仍會失敗。
第三個錯誤是信任為其他編碼所產生的對照表。基於 7 位元 ASCII 的「二進位代碼字母 A–Z」對照表,將無法與來源文字包含非 ASCII 字元時 UTF-8 編碼所產生的結果對應。UTF-8 與 7 位元 ASCII 共享前 128 個值,因此該對照表對這些字母而言是正確的 —— 但若將同一對照表套用於含有 é 的法文單字,則會產生錯誤的輸出,因為 é 周圍的位元組流包含了對照表未列出的延續位元組。
靜態對照表的不足之處
二進位對文字對照表是處理常見 ASCII 字母、常見標點符號以及 UTF-8 前導位元組結構模式的合理參考工具。但當文字包含大量多樣化的多位元組字元序列、當位元組字串來自通訊協定或檔案而非鍵入文字、或當位元組順序中僅有單一錯誤就會損毀整個解碼時,其實用性便會降低。在這些情境下,WHATWG UTF-8 編碼標準中所述的確定性轉換路徑,比任何對照表查找都更為可靠。若需深入了解逐位元組的操作方式,UTF-8 位元組逐步解析指南 以淺顯英文說明了前置位元模式,而 十六進位對文字轉換器 則採用同樣的嚴格驗證方式,但使用兩位數十六進位群組取代 8 位元二進位群組。
對照表終究是一種教學工具:它展示了模式與範例,但實際工作仍由解碼器負責。將兩者視為同一嚴格 8 位元慣例的一部分加以運用,方能保持一致;建立在該慣例上的二進位對文字對照表,無論面對 ASCII、帶重音的拉丁字母、CJK、符號或表情符號文字,皆能保持正確。
若您正在權衡各種方案,無需安裝應用程式在 Android 上將文字轉為十六進位 對此有詳細說明。