URL 編碼與解碼的運作機制
在互聯網的技術架構中,URL(統一資源定位器)只能傳送特定字元集的字元。當 URL 中包含空格、中文字元或特殊符號時,就必須透過百分號編碼(Percent-encoding)進行轉換。
本工具提供雙向轉換功能,可將一般文字編碼為符合標準的 URL 格式,或將已編碼的百分號序列還原為可讀文字。例如,輸入 hello world & city=上海 進行編碼,會轉換為 hello%20world%20%26%20city%3D%E4%B8%8A%E6%B5%B7。反之,將此百分號序列輸入並執行解碼,即可還原為原始文字。
在解碼過程中,百分號轉義必須是完整的 UTF-8 序列。如果輸入的序列不完整,例如出現 %E0%A4%A 這種殘缺的編碼,解碼程序將無法順利執行,系統會顯示「這段 URL 文字裡有殘缺的百分號轉義。」的錯誤提示。
完整 URL 與 URL 元件的編碼差異
進行 URL 轉換時,必須根據應用場景選擇正確的「URL 範圍」。本工具提供兩種範圍模式:
- 元件(對應
encodeURIComponent/decodeURIComponent):此模式適用於編碼查詢參數值、路徑片段或表單值。它會將所有特殊字元(包括:、/、?、&、=等)全部轉換為百分號編碼,確保這些數值在傳輸時不會干擾 URL 的整體結構。 - 完整 URL(對應
encodeURI/decodeURI):此模式適用於處理整條網址。它會保留網址結構中的關鍵字元,例如:、/、?、&、=等,使其維持可讀狀態,僅對網址中不安全的字元(如中文或空格)進行編碼。
HTML 實體轉義與還原
HTML 實體轉義(HTML Entity Escaping)是網頁開發中處理特殊字元的重要機制。當網頁編輯器或開發人員需要將文字安全地貼進 HTML 程式碼或屬性中時,直接使用某些字元可能會導致瀏覽器解析錯誤。
選擇「HTML 實體」模式時,工具會將 <、>、&、雙引號、單引號以及非 ASCII 文字(例如中文字「儲存」)轉換為對應的 HTML 實體編碼。這樣可以確保這些字元在 HTML 文件中被視為純文字呈現,而不會被瀏覽器誤認為是 HTML 標籤或語法的一部分。當需要將這些實體還原為正常文字時,使用反轉義功能即可恢復原貌。
需要注意的是,HTML 實體轉義與安全消毒(Security Sanitization)在概念上並不相同。轉義僅僅是字元格式的轉換,用以確保網頁呈現正確,並不能替代專門防範惡意代碼注入的安全消毒程序。
瀏覽器本機處理與隱私說明
本工具的轉換程序完全在用戶的瀏覽器本機內完成,處理過程不會將你的 URL 或 HTML 文字上傳到 BroBroGo 伺服器。
工具設有以下操作限制與系統提示:
- 輸入限制:單次處理的文字長度上限為 2,000,000 個字元。若超出此限制,會顯示「輸入內容太大,請控制在
{max}個字元以內。」。 - 無輸入提示:在未輸入任何文字時點擊轉換,會提示「請先貼上一些輸入。」。
- 超時與失敗:若轉換運算時間過長,會顯示「這次轉換耗時太久,請換一段更小的輸入。」;若因其他原因無法完成,則會提示「無法轉換這段輸入。」。
- 狀態反饋:清空輸入與輸出時會顯示「輸入和輸出已清空。」;將輸出移至輸入框時會顯示「輸出已移到輸入框。」;載入範例時則提示「範例已填入。」。
常見問題
應該選 URL 元件還是完整 URL?
查詢參數值、路徑片段或表單值選元件;想保留 :、/、?、&、= 這類 URL 結構字元時選完整 URL。
HTML 實體轉義會改變什麼?
它會把 <、>、&、引號和非 ASCII 文字轉成實體,方便安全地貼進 HTML 文字或屬性裡。
為什麼 URL 解碼有時會失敗?
百分號轉義必須是完整的 UTF-8 序列。像 %E0%A4%A 這樣的殘缺序列無法可靠解碼。