在 Windows 中將文字檔轉換為二進位,意味著將其 Unicode 字元重新編碼為精確的 UTF-8 位元組序列,並將這些位元組以零填補的八位元群組形式寫入,之間以單一空格分隔。在磁碟上,每個文字檔都已經以二進位形式儲存,所以大多數人所說的「轉換為二進位」,其實是指將那些位元組顯示為可見的 0 與 1,而不是去切換 Windows 內部的某個設定。記事本中的文字檔、桌面上的 .txt 文件,或儲存的記錄檔,都已經是位元組序列;這個轉換產生的是這些位元組的人類可讀檢視,而不是新的檔案格式。Windows 本身並未提供用於這種視覺轉換的內建指令,這就是為什麼大多數人會選擇開啟開發環境、撰寫 Python 或批次腳本,或使用在當前分頁中進行編碼的瀏覽器工具。文字轉二進位轉換器可直接處理這項工作:貼上或輸入文字、切換到文字轉 UTF-8 二進位模式,工具就會將每個位元組列印為正好八位元、以零填補、以單一空格分隔的二進位字串,結果會保留在瀏覽器中,不會離開當前分頁。

對 Windows 上的文字檔來說,「二進位」實際上代表什麼
Windows 磁碟上的每個文字檔都已經以位元組形式儲存;作業系統並不會為 .txt 文件另外保存一份「二進位模式」版本。當人們搜尋在 Windows 中將文字檔轉換為二進位的方法時,他們通常想要的是下列三種情況之一:
- 一個由 0 與 1 組成的可見呈現,方便貼到教學文章、電子郵件或論壇貼文中。
- 針對通訊協定、除錯或作業所需的明確位元組層級分解。
- 一個可逆的來回測試,用以證明原始 Unicode 字元在編碼步驟後仍然完整。
Windows 並未內建能將檔案位元組以八位元二進位群組列印出來的指令。記事本只能顯示文字,type 指令不會顯示 0 與 1,而 PowerShell 的格式化運算子也需要自訂腳本。因此,最快的本機做法就是使用在當前分頁中執行的瀏器式轉換器。文字轉二進位轉換器使用符合標準的 TextEncoder 將輸入的 Unicode 字串編碼,並將每個位元組列印為正好八位元、以零填補、以單一普通空格分隔的二進位字串,因此輸出內容不含歧義且可往返轉換。
UTF-8 位元組寬度如何改變位元組數量
一個常見的混淆來源,是誤以為一個字元永遠等於八個位元。在 UTF-8 中,寬度取決於 Unicode 純量值,工具回報的是編碼後的位元組,而非抽象的位元或 JavaScript 的 UTF-16 程式碼單元。轉換器所使用的精確位元組寬度遵循 Unicode 標準與 WHATWG 編碼規範,這就是為什麼 ASCII 字母僅佔一個位元組,而許多日常使用的字元需要更多位元組。
| 字元類型 | 範例 | UTF-8 位元組寬度 |
|---|---|---|
| 純 ASCII 字母 | A | 1 位元組 (01000001) |
| 雙位元組拉丁字母 | é | 2 位元組 (11000011 10101001) |
| 三位元組貨幣符號 | € | 3 位元組 |
| 四位元組輔助表情符號 | 4 位元組 |
因此,一個短短的字串所產生的二進位字串,可能遠比其字元數所暗示的更長,而轉換器會顯示真實的位元組數,而不是假裝每個字元都只佔一個位元組。實作上,這些寬度是由瀏覽器的 TextEncoder 所強制執行,MDN 將其記錄為一個會輸出位元組(而非程式碼點)的 UTF-8 編碼器。
在 Windows 中使用瀏覽器工具將文字檔轉換為二進位
由於 Windows 並未內建用於可見 0/1 呈現的指令,在 Windows 機器上的實務工作流程是:從 .txt 檔案複製文字、貼到轉換器中,再由瀏覽器產生二進位字串。下列步驟適用於任何安裝現代瀏覽器(Edge、Chrome、Firefox 或 Brave)的 Windows 版本,並將輸入內容保留在當前分頁內。
- 在瀏覽器中開啟文字轉二進位轉換器,並將模式選擇器切換至文字轉 UTF-8 二進位。
- 在記事本中開啟你的 .txt 檔案,選取要編碼的文字,並用 Ctrl+C 複製。若要複製整個檔案,請按 Ctrl+A 再按 Ctrl+C。
- 將文字貼入輸入框。工具最多接受 20,000 個 UTF-16 程式碼單元;較長的檔案必須分成多個區塊。
- 點擊轉換。工具會使用 WHATWG UTF-8 編碼器對字串進行編碼,並將每個位元組列印為正好八位元、以零填補、以單一普通空格分隔的二進位字串。
- 檢查顯示的位元組數,然後使用複製按鈕複製二進位字串,並貼到你的目的檔案或文件中。
由於編碼是在瀏覽器內部透過標準的 TextEncoder 進行,因此沒有上傳步,也不需要與伺服器往返,原始的 .txt 檔案在磁碟上不會被修改。這與 MDN TextEncoder 參考資料中記錄的 Web API 行為一致,該參考保證了在各瀏覽器與作業系統之間產生相同的位元組序列。
將二進位解碼回文字而不遺失位元組
反向作業與編碼一樣重要,特別是當輸出內容被貼到聊天訊息或儲存到記事檔案中時更是如此。轉換器強制使用嚴格的正規語言進行解碼:正好八個二進位數字、群組之間以單一普通空格分隔、不得有前置或後置空白字元、不得有逗號、不得有定位字元,也不得有 0b 這類前綴。
- 將模式選擇器切換至UTF-8 二進位轉文字。
- 將二進位字串貼入輸入框。工具最多接受 180,000 個輸入字元。
- 點擊轉換。工具會將每個八位元群組解析為一個位元組,並使用嚴格的 UTF-8 解碼器來解碼整段位元組序列。
- 若輸入格式正確分組,但位元組序列無效(例如出現單獨的後續位元組),解碼會失敗並顯示清楚的錯誤訊息,而不是將格式錯誤的位元組替換為 Unicode 替換字元。
- 複製解碼後的文字,並在儲存前確認它與原始內容一致。
嚴格的驗證機制讓來回轉換值得信賴:能成功解碼的字串,必然是能重新編碼為相同位元組的有效 UTF-8。解碼器採用了 MDN 上針對標準 TextDecoder 選項所描述的相同嚴格行為,因此任何靜默替換在設計上都是不可能的。
透過聊天或所見即所得編輯器複製二進位輸出時的陷阱
二進位文字在傳輸過程中相當脆弱。嚴格的間距要求是來回測試中最常見的失敗原因,而轉換器會拒絕有歧義的輸入,而不是猜測其意義。下列情況會破壞嚴格解碼,工具將會拒絕輸入:
- 聊天用戶端將多個空格折疊為單一空格,即使轉換器要求群組之間必須是正好一個 ASCII 空格。
- 所見即所得編輯器在貼上文字時插入換行符或智慧引號,導致位元組序列改變。
- 手動編輯時去除了群組的開頭零,使原本有效的八位元值變成格式錯誤的七位元值。
- 在群組之間加入 0b 前綴、逗號或定位字元,這些都會被明確拒絕。
- 在程式碼審查工具中,使用者未預期地被自動刪除了行尾空白。
解決方法是將輸出視為精確的位元組:在能逐位元組保留普通空格與換行內容的系統中複製與儲存。諸如記事本、Notepad++ 或 VS Code 等純文字編輯器通常較為安全;文書處理器、電子郵件編輯器以及大多數聊天視窗則不安全。針對通訊協定、原始碼或鑑識相關工作,應根據規範與目的系統來驗證實際的位元組序列,而非依賴字型呈現結果的方式。
何時該選用其他編碼工具
二進位只是眾多表示方式之一,而這個轉換器明確地不打算涵蓋所有用途。當真正的目的其實是別的事情時,改用鄰近的工具反而能獲得更乾淨的結果。
| 真正的目的 | 更合適的工具 | 為何二進位不適合 |
|---|---|---|
| 數值型位元組值或機器指令 | 十六進位轉文字轉換器 | 十六進位更簡短,且能逐位元組讀取。 |
| 網路安全傳輸或電子郵件承載內容 | Base64 編碼 / 解碼 | Base64 能在僅含 ASCII 的通道中存活,且具有可攜性。 |
| URL 中緊湊且 ASCII 安全的識別項 | URL 編碼 / 解碼 | 百分比編碼是 URL 與查詢字串的標準。 |
| 機密性、完整性或身分驗證 | AES、RSA、HMAC 等工具 | 二進位輸出所包含的資訊與來源文字相同,並不提供任何保密性。 |
同時也值得明確說明這個轉換器「不是」什麼:它不是加密、不是壓縮,也不會解析數值型二進位值、檔案、影像、Base64、十六進位、摩斯密碼或自訂的舊式字元集。若想以更口語化的方式深入了解相同的位元組表示法在磁碟上與網路上的實際行為,二進位轉文字的口語化指南會從另一個方向講解相同的模型。當真正的目的就是將每個 UTF-8 位元組顯示為可見的 0 與 1,並將結果往返還原為原始的 Unicode 時,文字轉二進位轉換器就是本機上、基於瀏覽器的路徑,且正好能做到這件事。
如需更深入的說明,請參二進位轉文字編碼:UTF-8 指南。