功能簡介
HTML 實體是代表字元的代碼,例如 < 代表 <,é 代表 é。這個工具可以把文字跳脫成實體,讓它安全地顯示在網頁中;也能把實體解碼回純文字,例如從 CMS 或電子郵件範本中複製標記出來時。
編碼使用完整的 HTML5 清單,包含 2,000 多個具名參照;解碼能理解具名、十進位(©)和十六進位(©)參照,結果與瀏覽器完全一致。
使用方法
- 把文字或 HTML 貼到 輸入 框、上傳檔案,或點 範例。
- 選擇 編碼 或 解碼。
- 編碼時,選擇要編碼的範圍:
- 僅 & < > ” ‘:把文字放進 HTML 或屬性所需的最少跳脫。
- 再加非 ASCII,具名實體:也把 é、© 和 — 等字元轉成具名實體,沒有名稱的字元則轉成數字參照。
- 再加非 ASCII,數字實體:同上,但一律使用數字形式(
é),這也是有效的 XML。 - 所有有名稱的字元:連
.和/這類標點符號也會編碼,適合會刪掉這些字元的系統。
- 複製或下載結果。按 作為輸入 可以再解碼一次,檢查來回轉換是否一致。
範例
<p>Café & "crème brûlée"</p>
只編碼特殊字元後會變成
<p>Café & "crème brûlée"</p>
加上非 ASCII 具名實體後會變成
<p>Café & "crème brûlée"</p>
常見用途
在部落格上展示程式碼片段而不讓瀏覽器把它算繪出來、把使用者的文字放進 HTML 電子郵件、修正 &amp; 這類被重複跳脫的文字(解碼一次即可),或讓檔案能被只接受 ASCII 的系統安全處理。
常見問題
› HTML 中哪些字元必須跳脫?
在文字內容中要跳脫 & 和 <。在屬性值裡,還要跳脫包住該值的那種引號。在任何地方都跳脫 & < > " 和 '(這也是這裡的預設)永遠是安全的。
› 該用具名實體還是數字實體?
所有新式瀏覽器都支援兩者。é 這類具名實體比較好讀;é 這類數字參照在 XML 和只認得少數名稱的舊解析器中也能用。如果頁面是 UTF-8,通常根本不需要編碼非 ASCII 字元。
› 解碼能處理沒有分號的實體嗎?
可以。解碼遵循 HTML 規格,因此像 © 這種沒有分號的舊寫法,會以瀏覽器的方式解碼。&foo; 這類未知的名稱則保持不變。
› 跳脫就足以防止 XSS 嗎?
對於放在 HTML 元素內和加了引號的屬性中的文字,跳脫是正確的防禦方式。但它無法讓不受信任的輸入在 script 區塊、style 區塊、事件處理屬性或 URL 中變得安全,這些地方需要針對情境的編碼。