如何使用HTML 跳脫字元轉換
- 選擇「編碼(跳脫)」或「解碼(還原)」。
- 編碼時選擇要轉換的字元:「僅特殊字元」只處理 & < > " ',「含所有非 ASCII」連中文與符號一起轉換。
- 選擇表示方式:「具名優先」使用 © 這類名稱,沒有名稱的字元改用十進位;也可以全部使用十進位或十六進位。
- 在輸入框貼上內容,結果即時顯示;按「複製結果」帶走,或按「用結果反向轉換」核對。
為什麼需要跳脫 HTML 字元?
在 HTML 中,< 代表標籤開始、& 代表實體開始、引號則用來包住屬性值。如果要在網頁上「顯示」這些字元本身,例如在教學文章中展示一段程式碼,就必須把它們寫成 <、&、" 等實體,否則瀏覽器會把它們當成語法解析,造成版面錯亂。
更重要的是安全性:把使用者輸入直接插入網頁而沒有跳脫,是跨站腳本攻擊(XSS)最常見的成因。至少要跳脫 & < > " ' 這五個字元,才能安全地放進 HTML 內容與以引號包住的屬性中。實務上應交給框架或範本引擎自動處理,本工具適合手動撰寫內容或檢查輸出時使用。
具名實體與數字實體
HTML 實體有三種寫法:具名實體如 ©,十進位數字如 ©,十六進位數字如 ©,三者都代表「©」。具名實體比較好讀,但只有部分字元有名稱;數字實體則可以表示任何 Unicode 字元,例如「中」是 中,擴充區漢字「𠮷」是 𠮷。
單引號的具名實體 ' 是 HTML5 才加入的,舊的 HTML 4 與部分電子郵件軟體不認得,因此本工具編碼時一律使用 '。解碼時則支援所有 HTML5 具名實體,但實體必須以分號結尾,沒有分號的寫法不會被轉換。撰寫時請務必加上分號,避免不同瀏覽器或程式解讀不一致。
什麼時候要轉換所有非 ASCII 字元?
現代網頁幾乎都使用 UTF-8,中文可以直接寫在 HTML 中,不需要轉成實體,轉換後檔案反而變大、也難以閱讀。只有在檔案或系統只能處理 ASCII 時,例如某些舊系統、程式碼中的字串常數,或編碼不確定的電子郵件範本,才需要選擇「含所有非 ASCII」。
常見問題
和一般空格有什麼不同?
是不換行空格,瀏覽器不會在它的位置換行,也不會把連續多個合併成一個。常用於讓「100 元」這類詞組不被拆到兩行,但不建議拿來排版縮排。
為什麼網頁上出現 &amp; 這種文字?
這是內容被跳脫了兩次。原本的 & 先變成 &,再次跳脫時又變成 &amp;。請檢查程式中是否重複呼叫跳脫函式,或資料庫裡已經存了跳脫後的內容。
URL 中的 & 也要跳脫嗎?
寫在 HTML 屬性中的網址,例如 href="page?a=1&b=2",依規範應把 & 寫成 &。瀏覽器通常能容忍未跳脫的寫法,但跳脫才是正確的做法。網址本身的編碼則請使用 URL 編碼工具。
輸入的內容會被執行或上傳嗎?
不會。轉換以純文字方式在瀏覽器中處理,輸入的 HTML 不會被執行,也不會傳送到任何伺服器。
最後更新: