HTML 實體編碼/解碼
將 HTML 特殊字符(<、&、"、'、>)編碼為命名或數字實體,或將它們解碼回純文本。自動檢測方向。
<p>Hello & world</p> → <p>Hello & world</p>
將 HTML 特殊字符(<、&、"、'、>)編碼為命名或數字實體,或將它們解碼回純文本。自動檢測方向。
<p>Hello & world</p> → <p>Hello & world</p>
HTML 實體編碼替換了否則會被解釋為 HTML 標記的特殊字符。 < 變成 <, & 變成 &,等等。當在網頁中以純文字顯示使用者產生的內容時,這是必需的 - 沒有它,您就會遇到 XSS 漏洞。
該工具自動偵測:如果輸入包含實體引用,則進行解碼;否則它會編碼。
該工具掃描輸入字串中的每個字符,並將其映射到 HTML5 規範中定義的相應 HTML 實體。對於五個預定義的字元引用 - & (&), < (<), > (>), " ("),以及 ' (') — 它使用命名實體。對於其他字符,它會退回到數字字符引用:十進制 (&#代碼點;) 或十六進位 (&#x代碼點;)。自動檢測邏輯檢查輸入是否存在 &;如果找到,它假定輸入是實體編碼的,並嘗試透過解析每個實體標記並將其轉換回其 Unicode 代碼點來進行解碼。對於五個特殊字符,編碼始終傾向於命名實體;對於所有其他字符,它使用字符的數字 Unicode 代碼點。
手動尋找替換和特定於語言的庫提供了處理 HTML 實體編碼的替代方法。
| 這個工具 | Python html 模組 | Notepad++ 尋找並替換 | |
|---|---|---|---|
| 易於使用 | 無需安裝,立即在瀏覽器中運行 | 需要 Python 腳本和 shell | 需要啟動編輯器、多步驟正規表示式 |
| 字元覆蓋率 | 透過數位實體的完整 Unicode | 透過 html.escape/unescape 實現完整的 Unicode | 只能明確替換,不能自動替換 |
| 批量處理 | 一次單一字串 | 可以以程式設計方式處理文件 | 每個文檔手動,無自動化 |
HTML 實體源自 HTML 的父標準 SGML。五個基本實體—— <, >, &, ", 和 ' — 由 Tim Berners-Lee 和 Dan Connolly 在 RFC 1866 (HTML 2.0, 1995) 中正式化。基於 Unicode 代碼點的數字字元引用後來被合併到 HTML 4.0 (1997) 中以支援國際字元。此工具可自動執行開發人員先前手動或透過伺服器端功能執行的編碼/解碼。
如果你想展示 <div> 作為文字而不是渲染它,首先對尖括號進行編碼。
在將使用者輸入的內容插入 DOM 之前,進行實體編碼以防止腳本注入。現代框架會自動執行此操作;原始 HTML 字串需要手動轉義。
某些 API 以 JSON 值傳回實體編碼的 HTML。解碼使它們易於人類閲讀。
一些聊天工具渲染 & 在 URL 中作為損壞的實體。在貼上之前對共享 URL 進行一次編碼可以修復這種邊緣情況。
包含 HTML 的豐富工具提示和資料屬性需要對其內容進行實體編碼,以便外部解析器不會感到困惑。
命名: <, &, "。數字: <, &, "。兩者都有效;命名對於任何字元(包括沒有命名實體的字元)來説都更具可讀性,數字工作。
五個必須編碼的 HTML 字元: <, >, &, ", '。其他字元(破折號、版權)不加改變地傳遞——現代 HTML 將它們作為 UTF-8 處理。
該工具透過隱藏的文字區域使用瀏覽器自己的 HTML 解析器。無論瀏覽器解碼什麼,您都會得到什麼——保證對於任何有效的實體引用都是正確的。
不——不同的逃生裝置。 URL編碼 用途 %xx 十六進制; HTML實體編碼用途 &name; 或 &#nn;。對 URL 元件使用 URL 編碼; HTML 內容的 HTML 編碼。