要把文字轉成二進位,請使用 UTF-8 編碼每個字元,並將每個產生的位元組寫成恰好八位、補零後的位元,位元之間以單一空格分隔,因為一個字母依字元不同可能佔用一到四個位元組。將文字轉成二進位的過程,是把人類可讀的文字表示成一串 8 位元位元組值的序列,其中每八個 0 與 1 的組合對應編碼輸出中的一個位元組。像 A 或 Z 這類 ASCII 字母使用一個位元組,像 é 這類帶腔調字母使用兩個,像 € 這類常見貨幣符號需要三個,而像 😀 這類補充字元則使用四個。因此結果並非每個字母固定八位元——而是每個位元組八位元,位元組數完全取決於輸入字串中出現哪些字元。文字轉二進位轉換器會使用瀏覽器基於標準的 TextEncoder 對輸入字串進行編碼,將每個位元組印成恰好八位、補零的位元並以一個普通空格分隔,並在你複製到其他地方之前回報總位元組數。所有處理都停留在目前的分頁中,永遠不會傳送到遠端服務。

將文字轉成二進位究竟代表什麼
當人們說「將文字轉成二進位」時,通常會想像每個字母各自變成整整齊齊的一組八個 0 與 1。那個畫面只有當文字完全由純 ASCII 字元組成時才成立。一旦文字中出現腔調字號、ASCII 之外的標點符號或表情符號,這個「一個字母等於一個位元組」的簡單假設便會瓦解。現代文字使用 UTF-8 編碼,這是一種可變寬度的方案,同一個字元依其碼點在標準中的位置,可能佔用一、二、三或四個位元組。對齊在八位元邊界上的,是位元組而非字元。
UTF-8 之所以以位元組為導向是刻意的。每個位元組都是一個自足的八位元單位,需要多個位元組的字元只是簡單地依序排列。解碼器由左至右走訪各個位元組:最高位元為 0 的位元組單獨構成一個單位元組字元;最高幾位元為 110 的位元組引入一個二位元組序列;1110 引入三位元組;11110 則引入四位元組。這就是為什麼嚴格的位元組級精確工具至關重要——一旦遺失了位元組的分割位置,就無法還原原始文字。因此,合格編碼器的輸出是一串位元組,每個位元組標記為恰好八個位元,而這些位元組本身就描述了底層字元的編碼形式。
UTF-8 如何決定一個文字使用多少位元組
一個文字所使用的位元組數並非任意,而是該文字所含碼點的確定性函式,規則明載於 WHATWG 編碼標準與 Unicode 標準之中。由 A 到 Z 組成的純英文單字保持每個字母一個位元組。混雜了腔調字母、貨幣符號、中日韓字元或表情符號的文字,其位元組長度會比字母數所暗示的更長,因為這些字元分別需要二、三或四個位元組。工具會在輸出中回報位元組數,讓你能看到編碼形式的實際大小。
| 字元 | 碼點 | UTF-8 位元組 | 輸出範例(8 位元群組) |
|---|---|---|---|
| A | U+0041 | 1 | 01000001 |
| é | U+00E9 | 2 | 11000011 10101001 |
| € | U+20AC | 3 | 11100010 10000010 10101100 |
| 😀 | U+1F600 | 4 | 11110000 10011111 10011000 10000000 |
像「café」這種混合寬度的文字,在 UTF-8 中因此佔用五個位元組——c 一個位元組、a 一個、f 一個、é 兩個——即使它只有四個字母。當你比較編碼大小或將位元組回送給解碼器時,重要的是位元組數;字母數僅作為合理的參考。若你想深入了解逐位元組的機制,請參閱文字轉二進位:為何一個字元並非永遠是 8 位元。
如何以三個步驟將文字轉成二進位
文字轉二進位轉換器擁有精簡且刻意的介面,旨在讓位元組表示明確可見。沒有上傳,也沒有第三方處理——所有工作都在目前的分頁內完成。請依照以下三個步驟將文字編碼為 UTF-8 位元組。
- 選擇方向。若要將文字編碼,請選擇「Text to UTF-8 binary」;若要將二進位字串解碼回文字,請選擇「UTF-8 binary to text」。
- 輸入內容。在編碼的輸入欄位中輸入或貼上文字;或在解碼的輸入欄位中貼上二進位(恰好八個 0 與 1,以一個普通空格分隔)。
- 選擇 Convert 並檢視結果。觸發轉換,然後檢查編碼面板中的位元組數,或解碼面板中的解碼文字,並在確認結果無誤後再複製。
作為具體範例,兩個字元的字串「Hi」會編碼為位元組序列 01001000 01101001,共兩個位元組、十六個位元。H 對應 U+0048,其八位元表示為 01001000;i 對應 U+0069,其八位元表示為 01101001。以一個空格連接後,編碼輸出為「01001000 01101001」,而輸出面板中的位元組數會顯示 2。編碼本身由瀏覽器的TextEncoder所定義,遵循與 WHATWG 標準相同的 UTF-8 規則。
如何安全地將二進位解碼回文字
解碼是反向操作,同樣嚴格。解碼器要求輸入完全符合特定的正規語言:八個二進位數字(每個為 0 或 1),以恰好一個普通空格分隔,且不得有前置或後置空白。它會拒絕 0b 之類的前綴、逗號、Tab、多重空格、七位元或九位元的群組,以及任何非 0 或 1 的字元。位元組數值絕不會被填充、修剪、推測或默默捨棄。解碼最多接受 180,000 個輸入字元,而編碼最多接受來自輸入文字的 20,000 個 UTF-16 碼元。
解碼器透過瀏覽器的 TextDecoder 進行嚴格的 UTF-8 驗證。一個格式正確的位元組序列仍可能是無效的文字——例如,一個孤立的引導位元組未帶有後續位元組。無效、過長、代理或超出範圍的序列會以清楚的錯誤訊息失敗,而不會被 Unicode 取代字元替換。這是有意為之:它讓反向操作適用於檢查精確的 UTF-8 位元組字串,同時避免虛假的來回轉換。八個獨立的黃金測試案例涵蓋 ASCII、一個單字、雙位元組的拉丁文字、三位元組的貨幣符號、四位元組的表情符號、中日韓文字、換行控制位元組,以及混合寬度的字串,其預期位元組以獨立於實作的方式撰寫。你可以在 MDN 的TextDecoder頁面進一步了解嚴格解碼器的行為。
二進位輸出在傳輸中何處出錯
輸出是一段由 0、1 與空格組成的純文字字串,而空格本身是格式的一部分。僅在能精確保留普通空格與換行內容的系統中複製或儲存結果。聊天程式與所見即所得編輯器可能會合併連續的空格或插入換行,即使位元組本身正確,仍會導致嚴格的解碼失敗。因此將輸出貼到文書處理器或通訊應用程式中,可能會在你未察覺的情況下改變位元組序列,使解碼器拒絕該結果。
對於通訊協定、原始碼或鑑識工作,請依規格與目的系統驗證實際的位元組序列,而非依賴字型在畫面上的呈現方式。等寬字型只是讓位元組在螢幕上更易閱讀——它並未將任何資訊編入位元之中。若你需要持久的副本,請將輸出儲存為純文字檔,或貼到不會自動調整空白的程式碼編輯器中。
二進位文字不是什麼
本工具是一個編碼工具,而非加密工具。二進位輸出所含的資訊與原始文字完全相同,不提供任何機密性、身分驗證、完整性、壓縮或密碼保護。任何擁有解碼器的人皆可讀取。它也不會解析數值型二進位、機器指令、檔案、影像、Base64、十六進位、摩斯密碼或自訂的舊式字元集。當真正的需求是其中之一時,請使用為該目的打造的工具——例如十六進位轉換器、Base64 編碼器、摩斯密碼翻譯器或校驗和計算機。選對表示方式,遠比把二進位強加於它從未設計應付的工作更有用。
若用於其真正用途——檢查位元組、學習 UTF-8 如何群組字元,或在已預期二進位的系統中傳遞短小的位元組序列——文字轉二進位轉換器能提供乾淨、位元組級精確且在本地端檢視資料的體驗,不會對應被拒絕的內容進行猜測或默默修補。
若你在權衡選項,瀏覽器中的批次 UTF-8 解碼:十六進位、十進位與二進位對此有詳細說明。