HTML 實體

把 <、>、& 和引號編成 HTML 實體,或把實體還原成字元。

讓文字能放進 HTML

一段文字裡如果有 < 或 &,直接放進 HTML,瀏覽器會把它當成標記。編碼把這些字元變成實體,解碼把實體還原成字元。這和 JSON 轉義 不是一回事,也不是去掉標籤。它只改寫字元。

怎麼用

  1. 貼上原文或實體字串。
  2. 方向選編碼或解碼。編碼一定會轉義 &、<、> 和兩種引號。單引號會變成 &#39;。
  3. 勾選「非 ASCII 字元也編碼」時,中文和帶重音的字母會變成 &#xHHHH;。頁面本身是 UTF-8、只需要轉義標記字元時,把它關掉。顯示範例會打開這個勾選,內容是 a < b & "text"。
  4. 解碼接受 &#20013; 這種十進位、&#x4E2D; 這種十六進位,以及一份短的具名清單:amp、lt、gt、quot、apos、nbsp、copy、reg、trade、mdash、ndash、hellip、laquo、raquo、bull、middot、euro、pound、yen、cent、sect、para、deg、plusmn、times、divide、micro。不在這份清單裡的名字會原樣留下。

不要指望它做別的事

編碼不會套標籤,也不會加文件類型。已經是實體的 & 再編一次會變成 &amp;。解碼一次只剝一層。HTML5 裡很多名字不在上面的清單中,會保持原樣。不是合法碼位的數字實體也保持原文,方便你看見寫錯的地方。

什麼時候用

  • 把使用者輸入放進 HTML,避免它變成標籤。
  • 讀一份把中文存成數字實體的舊頁面或訂閱源。
  • 在呈現之前看範本實際會顯示什麼。

常見問題

為什麼 &euro; 還是文字?

如果目前是編碼,& 本身被轉義了,你看到的是實體的原始碼。改成解碼,已知的名字才會變成字元。

我要全部 HTML5 名字。

這一頁覆蓋日常文字裡常見的名字,再加上任意數字實體。不認識的名字會留著,避免把拼寫錯誤悄悄丟掉。